spock integration
Spock pentru testarea integrării (cum ar fi serviciile de odihnă) și pentru testarea funcțională (cu seleniu):
Am explorat despre Batjocorire, împiedicare și spionaj în Spock în tutorialul nostru anterior.
In acest Seria de tutoriale complete de instruire pe Spock , până acum am acoperit, scriind teste unitare folosind cadrul Spock. Testele unitare, testează de obicei o singură clasă cu toate punctele de integrare sau apelurile externe sunt înlocuite cu apeluri simulate sau stub-uri.
Testele de integrare, în schimb, testează punctele de integrare între 2 piese. De exemplu, testarea contractelor dintre 2 servicii, testarea integrării între serviciu și baza de date etc.
În acest tutorial, vom învăța cum să folosim Spock pentru Testarea integrării (cum ar fi serviciile de odihnă) și pentru testarea funcțională . De exemplu , Integrarea Spock cu Seleniu etc.
Iată un tutorial video:
Ce veți învăța:
Integrare Spring Spock
Să încercăm să înțelegem acest lucru cu un exemplu despre modul în care putem integra Spock cu aplicațiile bazate pe MVC de boot Spring.
cele mai bune programe pentru recuperarea fișierelor șterse
Deși Spring are un set bogat de adnotări și se integrează bine cu JUnit, Spock adaugă sau ajută la adăugarea unei abordări de testare BDD ușor de citit, ceea ce face ca specificațiile de test să fie foarte lizibile.
Despre aplicație
Vom folosi o aplicație de pornire de primăvară bazată pe gradle, cu un controler bazat pe repaus care implementează un punct final.
Dependențe necesare
În plus față de dependențele de primăvară, vom adăuga dependența obișnuită de compilare groovy, precum și o dependență de bază Spock. O altă dependență bazată pe Spock este Spock-arc , care permite specificațiilor Spock să utilizeze adnotări bazate pe primăvară.
Înscrisă mai jos este lista dependențelor necesare:
- implementare „org.springframework.boot: spring-boot-starter”
- testImplementation ‘org.springframework.boot: spring-boot-starter-test’
- compilați „org.codehaus.groovy: groovy-all: 2.4.8”
- testCompile „org.spockframework: spock-core: 1.2-groovy-2.4”
- testCompile grup: „org.spockframework”, nume: „spock-spring”, versiune: „1.2-groovy-2.4”
Noțiuni de bază
Să începem cu testul propriu-zis.
În primul test, vom verifica dacă beanul este creat pentru clasa controlerului pe care am adăugat-o. Pentru aceasta, aplicația ar trebui să înceapă când testul este rulat.
Pentru a realiza acest lucru, vom adăuga @ SpringBootTest adnotare care asigură rularea contextului aplicației înainte ca testul să fie executat.
Mai jos este codul de testare:
@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 } } În codul de mai sus, puteți vedea că am folosit @SpringBootTest adnotare care asigură lansarea ApplicationContext, înainte ca testul să fie executat și, de asemenea, am conectat automat beanul WebController conform adnotărilor de primăvară.
Testul validează faptul că beanul Webcontroller este instanțiat ca parte a contextului aplicației.
Să vedem un alt test, în care vom atinge punctul final expus de controlerul web și vom valida codul de răspuns, precum și textul de răspuns prin clasele de testare cadru de primăvară, adică MockMvc și MockMvcRequestBuilders.
Vă rugăm să consultați codul de test de mai jos:
@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!' } } Integrarea Spock Selenium
Iată un tutorial video:
Acum să vedem un exemplu despre modul în care putem integra testele bazate pe seleniu folosind Spock. Acestea nu necesită altă dependență specifică, dar, în general, puteți utiliza modalitățile existente de a organiza teste de seleniu folosind BDD mai eficient.
In acest Exemplu, vom vedea un simplu test de seleniu prin ChromeWebDriver care încearcă să caute un cuvânt cheie pe căutarea Google și să verifice titlul paginii cu rezultatele căutării.
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') } } Observați cum am declarat instanța webdriver pentru ChromeDriver și am folosit-o în cadrul specificațiilor.
De asemenea, într-un pas dat, am declarat / definit toate elementele web pe care le-am solicita pentru executarea testului.
Cadrul Spock poate fi, de asemenea, integrat și utilizat cu cadrul de automatizare existent și putem înlocui doar testele bazate pe Java / JUnit cu Spock pentru a utiliza puterea programării declarative în Groovy.
Concluzie
În acest tutorial, am explorat diferitele moduri de integrare a testelor bazate pe Spock cu alte cadre și tipuri de teste, cum ar fi teste de integrare și teste End-2-End.
Am văzut exemple de integrare Spock cu Spring Framework și teste de integrare bazate pe seleniu. Similar cu acestea, Spock poate fi folosit și pentru a scrie teste cu clienții Rest pentru testarea integrării API-urilor bazate pe REST.
Pregătește-te rapid pentru un Spock Interview cu următorul tău tutorial, care acoperă o listă cu cele mai importante Întrebări despre Spock Interview !!
Lectură recomandată
- Testarea unităților de scriere cu Spock Framework
- Întrebări de interviu cu răspunsuri Spock (Cele mai populare)
- Spock batjocură și stubbing (exemple cu tutoriale video)
- Testare bazată pe date sau parametrizată cu Spock Framework
- Tutorial Spock: Testare cu Spock și Groovy
- Integrarea seleniului cu JMeter
- Diferențele dintre testarea unitară, testarea integrării și testarea funcțională
- Testarea funcțională Vs testarea nefuncțională