spock tutorial testing with spock
Hands-on Spock Tutorial Series: Δοκιμή με πλαίσιο Spock και Γλώσσα προγραμματισμού Groovy
Αυτή η σειρά σεμιναρίων θα εμπλουτίσει πλήρως τις γνώσεις σας σχετικά με το Spock Framework.
Απλά και ξεκάθαρα παραδείγματα έχουν συμπεριληφθεί σε κάθε φροντιστήριο για την εύκολη κατανόηση της έννοιας.
Ετοιμαστείτε να μάθετε δωρεάν το Spock !!
Λίστα όλων των μαθημάτων Spock σε αυτήν τη σειρά:
Μάθετε λεπτομερώς το Spock με τη βοήθεια αυτής της σειράς Intensive Spock Training για αρχάριους και έμπειρους επαγγελματίες.
Εκμάθηση # | Σύνδεσμος |
---|---|
Εκμάθηση # 1 | Εισαγωγή στο Spock and Groovy |
Εκμάθηση # 2 | Γράφοντας μονάδες δοκιμών με Spock |
Εκμάθηση # 3 | Παραμετροποιημένος έλεγχος με Spock |
Εκμάθηση # 4 | Spock χλευασμός και Stubbing |
Εκμάθηση # 5 | Spock με Selenium Functional Test |
Εκμάθηση # 6 | Ερωτήσεις συνέντευξης Spock |
Επισκόπηση των Tutorials στο Spock Series
Tutorial_Num | Τι θα μάθετε |
---|---|
Εκμάθηση # 1 | Εισαγωγή στο Spock and Groovy Αυτό το εισαγωγικό σεμινάριο θα εξηγήσει τα πάντα για το Spock, το οποίο είναι ένα δοκιμαστικό πλαίσιο που είναι χτισμένο πάνω από το Groovy. Επιβάλλει το BDD στον πυρήνα και διασφαλίζει ότι όλες οι δοκιμές που γράφονται χρησιμοποιώντας το πλαίσιο ακολουθούν τις συμβάσεις BDD. |
Εκμάθηση # 2 | Γράφοντας μονάδες δοκιμών με Spock Σε αυτό το σεμινάριο, θα εξετάσουμε όλες τις λεπτομέρειες / βήματα που απαιτούνται για να ξεκινήσετε με τη δοκιμή μονάδας στο Spock μαζί με απλά παραδείγματα. |
Εκμάθηση # 3 | Παραμετροποιημένος έλεγχος με Spock Αυτό το σεμινάριο θα εξηγήσει με σαφήνεια ποιες είναι οι παραμετροποιημένες δοκιμές και πώς μπορείτε να αξιοποιήσετε τα ενσωματωμένα χαρακτηριστικά του Spock για να επιτύχετε δοκιμές βάσει δεδομένων. |
Εκμάθηση # 4 | Spock χλευασμός και Stubbing Αυτό το σεμινάριο Spock θα εξηγήσει λεπτομερώς το Mocking and Stubbing που είναι ένα από τα πιο βασικά δομικά στοιχεία εκτεταμένων δοκιμών μονάδας. |
Εκμάθηση # 5 | Spock με Selenium Functional Test Μάθετε πώς να χρησιμοποιείτε το Spock for Integration testing (όπως υπηρεσίες ανάπαυσης) και για λειτουργικές δοκιμές από αυτό το ενημερωτικό σεμινάριο. Για παράδειγμα, Ενσωμάτωση Spock με Σελήνιο. |
Εκμάθηση # 6 | Ερωτήσεις συνέντευξης Spock Αυτό το σεμινάριο περιλαμβάνει μια λίστα με τις πιο δημοφιλείς ερωτήσεις συνέντευξης Spock με απαντήσεις και παραδείγματα. Αυτές οι ερωτήσεις θα οδηγούσαν όντως σε οποιονδήποτε να ξεκαθαρίσει τη συνέντευξη του Spock με επιτυχία στην πρώτη προσπάθεια. |
Τι θα μάθετε:
- Τι είναι το Spock;
- Παρακολουθήστε το εκπαιδευτικό βίντεο Spock and Groovy
- Τι είναι το Groovy;
- Ξεκινώντας με το Spock
- Ανατομία μιας προδιαγραφής Spock
- Περιγραφές μπλοκ προδιαγραφών
- Σημαντικές συμβουλές
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Τι είναι το Spock;
Το Spock είναι ένα δοκιμαστικό πλαίσιο που είναι χτισμένο στην κορυφή του Groovy. Επιβάλλει το BDD στον πυρήνα και διασφαλίζει εάν όλες οι δοκιμές που γράφονται χρησιμοποιώντας το πλαίσιο ακολουθούν τις συμβάσεις BDD.
Επίσης, σε αντίθεση με το JUnit, το Spock έχει το δικό του Mocking και δοκιμάζει διπλές βιβλιοθήκες, καθώς και πλήρη υποστήριξη για παραμετροποιημένα σενάρια δοκιμών.
Λόγω αυτού του πλήρους πακέτου από μόνος του, οι προδιαγραφές Spock είναι εξαιρετικά ευανάγνωστες και εκφραστικές και ως αποτέλεσμα των οποίων κάνουν τη δοκιμή για να επιτύχουν όλο και περισσότερο από αυτό που προοριζόταν για τη μείωση του κωδικού boilerplate cliché.
Παρά όλα αυτά τα δροσερά χαρακτηριστικά, οι δοκιμές Spock μπορούν να εκτελεστούν χρησιμοποιώντας τον υπάρχοντα δρομολογητή δοκιμών JUnit και τα υπάρχοντα εργαλεία γραμμής εντολών / κατασκευής όπως το Maven και το Gradle, τα οποία το καθιστούν ακόμη πιο συναρπαστικό στη χρήση. Με λίγα λόγια, το Spock συνδυάζει όλα τα καλά χαρακτηριστικά του JUnit, BDD (πλαίσια όπως το JBehave & Αγγούρι ) καθώς και κοροϊδεύω.
Θα ρίξουμε μια ματιά σε μερικά παραδείγματα που απεικονίζουν καθένα από αυτά τα χαρακτηριστικά στις επόμενες ενότητες.
Παρακολουθήστε το εκπαιδευτικό βίντεο Spock and Groovy
Τι είναι το Groovy;
Το Groovy είναι μια γλώσσα scripting για την πλατφόρμα Java.
Μερικά από τα κύρια χαρακτηριστικά του groovy περιλαμβάνουν:
# 1) Μπορεί να χρησιμοποιηθεί ως δυναμικά δακτυλογραφημένο (όπου μια μεταβλητή μπορεί να κρατήσει οποιονδήποτε τύπο δεδομένων) καθώς και στατικά δακτυλογραφημένη (η οποία επιβάλλει έντονα δακτυλογραφημένες κατασκευές σε μεταβλητές που κατέχουν δεδομένα)
Παράδειγμα : Έχουμε εκχωρήσει πίνακα και χάρτες με τον ίδιο τρόπο και εσωτερικά ο groovy καθορίζει τον τύπο και τον χειρίζεται κατάλληλα.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
Η έξοδος του παραπάνω δείγματος κώδικα είναι:
τάξη java.util.ArrayList
τάξη java.util.LinkedHashMap
#δύο) Όλος ο έγκυρος κώδικας Java είναι επίσης ένας έγκυρος κώδικας Groovy (αλλά όχι το αντίστροφο καθώς έχει και πρόσθετα χαρακτηριστικά).
# 3) Άλλα χαρακτηριστικά περιλαμβάνουν μετα-προγραμματισμό, κλείσιμο, έλεγχο στατικού τύπου κ.λπ.
# 4) Διαφορετικός Ιάβα Τα ερωτηματικά είναι προαιρετικά σε groovy και οι πρωτόγονοι τύποι θεωρούνται ως αντικείμενα από προεπιλογή.
Καθώς αυτή η σειρά εκμάθησης επικεντρώνεται περισσότερο στο Spock, θα μάθουμε απλώς αυτές τις δυνατότητες του Groovy που είναι απαραίτητες για τη συγγραφή προδιαγραφών δοκιμής με βάση το Spock.
Ξεκινώντας με το Spock
Για να ξεκινήσετε, ας δούμε, ποιες βιβλιοθήκες απαιτούνται ανάλογα με το σύστημα κατασκευής που χρησιμοποιείτε (π.χ. Gradle / maven).
Για έργα με βάση το Maven
Τα έργα Maven θα πρέπει να περιλαμβάνουν ένα πρόσθετο για τη σύνταξη κώδικα Gradle καθώς και ένα πρόσθετο surefire για να εκτελούνται προδιαγραφές με βάση το groovy. Εκτός από αυτό το groovy & Spock, εξαρτήσεις πρέπει επίσης να προστεθεί.
org.codehaus.gmavenplus gmavenplus-plugin 1.5 testCompile maven-surefire-plugin 2.18.1 false **/*Spec.java org.spockframework spock-core 1.3-groovy-2.5 test
Για έργα που βασίζονται στο Gradle
Για ένα δείγμα αρχείου gradle όπως παρακάτω, οι πιο σημαντικές απαιτήσεις περιλαμβάνουν το πρόσθετο gradle και τις εξαρτήσεις για groovy για κώδικα και δοκιμή.
plugins { id 'java' id 'groovy' } repositories { mavenCentral() } dependencies { compile 'org.codehaus.groovy:groovy-all:2.4.8' testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' }
Ανατομία μιας προδιαγραφής Spock
Οι δοκιμές Spock μπορούν να γραφτούν για οποιαδήποτε γλώσσα εκτελείται στο JVM. Αυτό σημαίνει ότι ακόμη και αν ο κωδικός της εφαρμογής σας είναι σε Java ή Scala ή Kotlin κ.λπ., μπορείτε ακόμα να επιλέξετε να γράψετε τις δοκιμές μονάδας / ενοποίησης στο Spock (έναντι άλλων όπως JUnit, JBehave κ.λπ.).
Οι τάξεις δοκιμής Spock ονομάζονται 'Προδιαγραφές' (Παρόμοια με τις προδιαγραφές στον κόσμο BDD) και μπορείτε να επεκτείνετε την κατηγορία 'Προδιαγραφές' του πλαισίου Spock. (Η προδιαγραφή είναι η βασική κατηγορία του πλαισίου Spock).
Κάθε αρχείο προδιαγραφής μπορεί να περιέχει πολλαπλές δοκιμές (παρόμοια με ένα αρχείο κλάσης δοκιμής JUnit) και κάθε δοκιμή μπορεί προαιρετικά να περιέχει τα μπλοκ BDD, δηλαδή, όταν και πότε. Αυτό είναι παρόμοιο με άλλα πλαίσια BDD, όπου κάθε μία από αυτές τις ενότητες μπορεί να συσχετιστεί με τις ενότητες Arrange, Act και Assert στις δοκιμές JUnit αντίστοιχα.
Ακολουθεί ένα μπλοκ διάγραμμα που απεικονίζει την ιεραρχία του Spec και των δοκιμών.
Ας δούμε πώς φαίνεται μια προδιαγραφή δείγματος στον κώδικα:
import spock.lang.Specification class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { given: String str1 = 'hello' String str2 = 'HELLO' when: str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: str1 == str2 } def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 when: int result = input1 + input2 then: result == 35 } }
Λίγα σημαντικά σημεία που πρέπει να σημειώσετε εδώ:
# 1) Κοιτάξτε το όνομα των σεναρίων δοκιμής (η συμβολοσειρά μετά τη λέξη-κλειδί def): 'ελέγξτε την ισότητα 2 συμβολοσειρών χωρίς ευαισθησία'. Αυτές είναι απλές αγγλικές χορδές και αυτό καθιστά τα ονόματα των δοκιμών αρκετά ευανάγνωστα και δίνει μια πραγματική αίσθηση για να δοκιμάσετε το τι επιτυγχάνει.
Συγκρίνετέ το με το συνηθισμένο τεστ JUnit όπου το όνομα της δοκιμής θα μοιάζει με γ.
caseEquality_withValidInput_shouldBeEqual()
#δύο) Δεδομένου, πότε και μετά τα μπλοκ είναι ισοδύναμα με το Arrange, Act και Assert. Από αυτά κοιτάξτε το τότε (ή το μπλοκ διεκδίκησης) που συνεπάγεται ισχυρισμό ισότητας και αποφεύγει όλους τους κωδικούς του λέβητα που σχετίζονται με ισχυρισμούς.
Παράδειγμα , Ένας ισχυρισμός στο JUnit θα φαινόταν όπως φαίνεται παρακάτω:
@Test public void compareStrings_withValidInput_shouldReturnSuccess() { // Arrange String str1 = 'hello'; String str2 = 'HELLO'; // Act str1 = str1.toLowerCase(); str2 = str2.toLowerCase(); // Assert Assert.assertEquals(str1,str2); }
Όπως μπορείτε να δείτε από τα παραπάνω, οι δοκιμές Spock κάνουν τις δοκιμές να φαίνονται λιγότερο λεκτικές καθώς και να αποφεύγουν όλους τους κωδικούς των λέβητων σε ισχυρισμούς (και ρύθμιση, κ.λπ.)
Περιγραφές μπλοκ προδιαγραφών
Για καθένα από τα μεμονωμένα μπλοκ σε μια δοκιμή, μπορείτε να επιλέξετε να παρέχετε περιγραφή μπλοκ ως συμβολοσειρά για να παρέχετε περισσότερες λεπτομέρειες σχετικά με το μπλοκ που εκτελείται. Αυτό είναι χρήσιμο για την παροχή μιας πιο λεπτομερούς δομής στο τεστ.
Ας δούμε ένα παράδειγμα παρακάτω:
def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
Σημαντικές συμβουλές
# 1) Όλα τα μπλοκ σε μια προδιαγραφή Spock είναι προαιρετικά. Ωστόσο, εάν υπάρχουν 'πότε' και 'τότε' θα πρέπει να εμφανίζονται μαζί στη σειρά.
#δύο) Εάν απλώς πρέπει να επικυρώσετε έναν ισχυρισμό (και δεν έχετε ανάγκη όταν μπλοκάρετε), μπορείτε να χρησιμοποιήσετε το ' αναμένω ' ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Μπορεί να χρησιμοποιηθεί για να επιβεβαιώσει τις προϋποθέσεις ακόμη και πριν και μετά μπλοκάρει (και μπορεί να χρησιμοποιηθεί πολλές φορές σε μια δοκιμή).
Ας δούμε ένα δείγμα χρήσης της προσδοκίας, όπως η επικύρωση της προϋπόθεσης πριν από την εκτέλεση του μπλοκ 'πότε'.
def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 expect: input1.getClass().toString() == 'class java.lang.Integer' input2.getClass().toString() == 'class java.lang.Integer' input1 = Integer.MIN_VALUE when: int result = input1 + input2 then: result == 35 }
Όπως φαίνεται παραπάνω, το μπλοκ αναμονής προσπαθεί να επιβεβαιώσει την τιμή κλάσης των πεδίων εισαγωγής καθώς και την τιμή μιας από τις εισόδους που βρίσκεται εντός του εύρους.
συμπέρασμα
Σε αυτό το σεμινάριο Spock, έχουμε καλύψει τα βασικά της γλώσσας προγραμματισμού του Groovy, μαζί με την ανατομία ή τα βασικά δομικά στοιχεία μιας προδιαγραφής Spock.
Δημιουργήσαμε ένα δείγμα έργου με τις απαιτούμενες εξαρτήσεις για να γράψουμε τις προδιαγραφές Spock με βάση το groovy και γράψαμε ένα δείγμα προδιαγραφών.
Στα άλλα σεμινάρια αυτής της σειράς, θα διερευνήσουμε βαθύτερα τις δυνατότητες που παρέχονται από το πλαίσιο Spock και θα μάθουμε πώς χρησιμοποιούν τη γλώσσα groovy για να δημιουργήσουν καθαρές και ευανάγνωστες προδιαγραφές δοκιμής.
ποιος είναι ένας καλός ιστότοπος για να παρακολουθήσετε anime
Μείνετε συντονισμένοι με τα επερχόμενα μαθήματα Spock για να μάθετε περισσότερα σχετικά με τα φωτιστικά δοκιμών, τους ισχυρισμούς και τις αναφορές στο Spock.
Συνιστώμενη ανάγνωση
- Γράφοντας μονάδες δοκιμών με Spock Framework
- Ερωτήσεις συνέντευξης Spock με απαντήσεις (πιο δημοφιλείς)
- Spock για ενσωμάτωση και λειτουργική δοκιμή με σελήνιο
- Spock Mocking and Stubbing (Παραδείγματα με Video Tutorials)
- Με βάση δεδομένα ή παραμετρικές δοκιμές με πλαίσιο Spock
- Εκμάθηση έκλειψης σε βάθος για αρχάριους
- Εκμάθηση Java Reflection με παραδείγματα
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration