spock integration
Spock για δοκιμή ενοποίησης (όπως υπηρεσίες ανάπαυσης) και για λειτουργικές δοκιμές (με σελήνιο):
Εξερευνήσαμε Χλευασμός, Stubbing και κατασκοπεία στο Spock στο προηγούμενο σεμινάριό μας.
Σε αυτό Πλήρης εκπαιδευτική σειρά εκπαιδευτικών στο Spock , Μέχρι στιγμής καλύψαμε, γράφοντας τεστ μονάδας χρησιμοποιώντας το πλαίσιο Spock. Οι δοκιμές μονάδας, συνήθως δοκιμάζουν μια τάξη με όλα τα σημεία ολοκλήρωσης ή τις εξωτερικές κλήσεις αντικαθίστανται από ψευδείς κλήσεις ή στέλεχος.
Οι δοκιμές ολοκλήρωσης, αντίθετα, ελέγχουν τα σημεία ολοκλήρωσης μεταξύ 2 τεμαχίων. Για παράδειγμα, δοκιμή συμβάσεων μεταξύ 2 υπηρεσιών, δοκιμή ενοποίησης μεταξύ υπηρεσίας και βάσης δεδομένων κ.λπ.
Σε αυτό το σεμινάριο, θα μάθουμε πώς να χρησιμοποιούμε το Spock Δοκιμή ολοκλήρωσης (όπως υπηρεσίες ανάπαυσης) και για λειτουργικές δοκιμές . Για παράδειγμα , Ενσωμάτωση Spock με Σελήνιο κ.λπ.
Εδώ είναι ένα εκπαιδευτικό βίντεο:
Τι θα μάθετε:
Άνοιξη Spock Integration
Ας προσπαθήσουμε να το κατανοήσουμε αυτό με ένα παράδειγμα, για το πώς μπορούμε να ενσωματώσουμε το Spock με εφαρμογές που βασίζονται στο Spring boot MVC.
πώς να ανοίξετε ένα αρχείο δεδομένων στα παράθυρα
Παρόλο που το Spring, διαθέτει ένα πλούσιο σύνολο σχολιασμών και ενσωματώνεται καλά με το JUnit, το Spock προσθέτει ή βοηθά να προσθέσει μια ευανάγνωστη προσέγγιση δοκιμής με στυλ BDD, η οποία καθιστά έτσι τις προδιαγραφές δοκιμής εξαιρετικά ευανάγνωστες.
Σχετικά με την εφαρμογή
Θα χρησιμοποιήσουμε μια εφαρμογή εκκίνησης ελατηρίου εκκίνησης που βασίζεται σε gradle, με έναν ελεγκτή με βάση το υπόλοιπο να εφαρμόζει ένα τελικό σημείο.
Απαιτούμενες εξαρτήσεις
Εκτός από τις εαρινές εξαρτήσεις εκκίνησης, θα προσθέσουμε τη συνήθη εξάρτηση compo groovy καθώς και μια εξάρτηση πυρήνα Spock. Μια άλλη εξάρτηση που βασίζεται στο Spock είναι Spock-spring , που επιτρέπει στις προδιαγραφές Spock να χρησιμοποιούν σχολιασμούς με βάση την άνοιξη.
Παρατίθεται παρακάτω η λίστα των απαιτούμενων εξαρτήσεων:
- υλοποίηση «org.springframework.boot: spring-boot-starter»
- testImplementation «org.springframework.boot: spring-boot-starter-test»
- μεταγλώττιση 'org.codehaus.groovy: groovy-all: 2.4.8'
- testCompile 'org.spockframework: spock-core: 1.2-groovy-2.4'
- testCompile group: ‘org.spockframework’, όνομα: ‘spock-spring’, έκδοση: ‘1.2-groovy-2.4’
Ξεκινώντας
Ας ξεκινήσουμε με την πραγματική δοκιμή.
Στην πρώτη δοκιμή, θα ελέγξουμε εάν το φασόλι δημιουργείται για την κατηγορία ελεγκτή που έχουμε προσθέσει. Για αυτό, η εφαρμογή θα πρέπει να ξεκινήσει όταν εκτελείται η δοκιμή.
Για να το επιτύχουμε, θα προσθέσουμε @ SpringBootTest σχολιασμός που διασφαλίζει την εκτέλεση της εφαρμογής Περιβάλλον πριν από την εκτέλεση της δοκιμής
Παρακάτω είναι ο κωδικός δοκιμής:
@SpringBootTest class SampleSpringSpec extends Specification { @Autowired private WebController webController def 'when context is loaded then controller bean is created'() { expect: 'the WebController is created' webController != null } }
Στον παραπάνω κώδικα, μπορείτε να δείτε ότι έχουμε χρησιμοποιήσει @SpringBootTest σχολιασμός που διασφαλίζει την εκκίνηση του ApplicationContext, προτού εκτελεστεί η δοκιμή και έχουμε επίσης αυτόματη σύνδεση του WebController bean σύμφωνα με τους εαρινούς σχολιασμούς.
Η δοκιμή επιβεβαιώνει ότι το φασόλι Webcontroller λαμβάνεται ως μέρος του περιβάλλοντος εφαρμογής.
Ας δούμε μια άλλη δοκιμή, όπου θα χτυπήσουμε το εκτεθειμένο τελικό σημείο από τον ελεγκτή Web, και θα επικυρώσουμε τον κωδικό απόκρισης καθώς και το κείμενο απόκρισης μέσω των κλάσεων δοκιμής πλαισίου Spring, δηλαδή MockMvc και MockMvcRequestBuilders.
Ανατρέξτε στον παρακάτω κωδικό δοκιμής:
@AutoConfigureMockMvc(secure=false) @WebMvcTest() class SampleMvcSpec extends Specification{ @Autowired private MockMvc mvc def 'assert response and status code for /greeting'() { expect: 'status code as 200 and response string as Hello world!' mvc.perform(MockMvcRequestBuilders.get('/hello')) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn().response.contentAsString == 'Hello world!' } }
Spock Selenium Integration
Εδώ είναι ένα εκπαιδευτικό βίντεο:
Ας δούμε τώρα ένα παράδειγμα για το πώς μπορούμε να ενσωματώσουμε τις δοκιμές που βασίζονται σε σελήνιο χρησιμοποιώντας το Spock. Αυτά δεν απαιτούν άλλη συγκεκριμένη εξάρτηση, αλλά γενικά, μπορείτε να χρησιμοποιήσετε τους υπάρχοντες τρόπους για να οργανώσετε τις δοκιμές σεληνίου χρησιμοποιώντας BDD πιο αποτελεσματικά.
Σε αυτό Παράδειγμα, θα δούμε μια απλή δοκιμή σεληνίου μέσω του ChromeWebDriver που προσπαθεί να αναζητήσει μια λέξη-κλειδί στην αναζήτηση google και να επαληθεύσει τον τίτλο της σελίδας αποτελεσμάτων αναζήτησης.
class SeleniumSpec extends Specification { private static def WebDriver driver = new ChromeDriver() def 'cleanupSpec'() { if(driver != null) { driver.close() } } def 'selenium integration with spock'() { given: driver.navigate().to('https://www.google.co.in') WebElement searchBox = driver.findElement(By.cssSelector('input(name=q)')); WebElement submitSearchButton = driver.findElement(By.cssSelector('input(name=btnK)')); when: searchBox.sendKeys('India') Thread.sleep(5000) submitSearchButton.click() def title = driver.getTitle() then: title.toLowerCase()contains('india') } }
Παρατηρήστε πώς δηλώσαμε την παρουσία webdriver για το ChromeDriver και χρησιμοποιήσαμε τις προδιαγραφές.
Επίσης, σε ένα δεδομένο βήμα, έχουμε δηλώσει / ορίσει όλα τα στοιχεία ιστού που θα απαιτούσαμε για την εκτέλεση δοκιμής.
Το πλαίσιο Spock μπορεί επίσης να ενσωματωθεί και να χρησιμοποιηθεί με το υπάρχον πλαίσιο Αυτοματισμού και μπορούμε απλά να αντικαταστήσουμε τις δοκιμές που βασίζονται σε Java / JUnit με το Spock για να αξιοποιήσουμε τη δύναμη του δηλωτικού προγραμματισμού στο Groovy.
συμπέρασμα
Σε αυτό το σεμινάριο, διερευνήσαμε τους διαφορετικούς τρόπους ενσωμάτωσης δοκιμών βασισμένων στο Spock με άλλα πλαίσια και τύπους δοκιμών όπως δοκιμές ενοποίησης και δοκιμές End-2-End.
Είδαμε παραδείγματα ολοκλήρωσης Spock με Spring framework και τεστ ολοκλήρωσης με βάση το Σελήνιο. Παρόμοια με αυτά, το Spock μπορεί επίσης να χρησιμοποιηθεί για τη σύνταξη δοκιμών με πελάτες υπόλοιπου για δοκιμές ενοποίησης των API που βασίζονται σε REST.
Προετοιμαστείτε γρήγορα για μια συνέντευξη Spock με το επερχόμενο σεμινάριό σας, το οποίο καλύπτει μια λίστα με τις πιο σημαντικές ερωτήσεις συνέντευξης Spock !!
Εκπαιδευτικό πρόγραμμα PREV | ΕΠΟΜΕΝΟ Φροντιστήριο
Συνιστώμενη ανάγνωση
- Γράφοντας μονάδες δοκιμών με Spock Framework
- Ερωτήσεις συνέντευξης Spock με απαντήσεις (πιο δημοφιλείς)
- Spock Mocking and Stubbing (Παραδείγματα με Video Tutorials)
- Με βάση δεδομένα ή παραμετρικές δοκιμές με πλαίσιο Spock
- Tutorial Spock: Δοκιμή με Spock και Groovy
- Ενσωμάτωση σεληνίου με JMeter
- Οι διαφορές μεταξύ δοκιμών μονάδας, δοκιμών ολοκλήρωσης και δοκιμών λειτουργίας
- Λειτουργική δοκιμή Vs Μη λειτουργική δοκιμή