spock integration
Spock per a proves d’integració (com ara serveis de descans) i per a proves funcionals (amb seleni):
Hem explorat Burleta, obstrucció i espionatge a Spock al nostre tutorial anterior.
En aquest Sèrie de tutorials de formació completa a Spock , fins ara hem tractat, escrivint proves unitàries mitjançant el framework Spock. Les proves unitàries, normalment proven una sola classe amb tots els punts d’integració o les trucades externes s’estan substituint per trucades simulades o per tal de provar-les.
Les proves d’integració, en canvi, posen a prova els punts d’integració entre 2 peces. Per exemple, provar els contractes entre 2 serveis, provar la integració entre servei i base de dades, etc.
En aquest tutorial, aprendrem a utilitzar Spock per a Proves d'integració (com serveis de descans) i per a proves funcionals . Per exemple , Integració de Spock amb seleni, etc.
Aquí teniu un vídeo tutorial:
Què aprendreu:
Integració de Spring Spock
Intentem entendre-ho amb un exemple de com podem integrar Spock amb aplicacions basades en MVC d’arrencada Spring.
quina és la millor eliminació de programari maliciós
Tot i que Spring, té un ric conjunt d’anotacions i s’integra bé amb JUnit, Spock afegeix o ajuda a afegir un enfocament de prova amb estil BDD de fàcil lectura que fa que les especificacions de les proves siguin molt llegibles.
Quant a l'aplicació
Utilitzarem una aplicació d’inici d’arrencada de primavera basada en gradle, amb un controlador basat en descans que implementa un punt final.
Dependències requerides
A més de les dependències d'arrencada de primavera, afegirem la dependència de compilació groovy habitual, així com una dependència bàsica de Spock. Una altra dependència basada en Spock és Spock-spring , que permet a les especificacions de Spock utilitzar anotacions basades en primavera.
A continuació es mostra la llista de dependències obligatòries:
- implementació 'org.springframework.boot: spring-boot-starter'
- testImplementation ‘org.springframework.boot: spring-boot-starter-test’
- compila 'org.codehaus.groovy: groovy-all: 2.4.8'
- testCompile 'org.spockframework: spock-core: 1.2-groovy-2.4'
- testCompile grup: 'org.spockframework', nom: 'spock-spring', versió: '1.2-groovy-2.4'
Començant
Comencem amb la prova real.
A la primera prova, comprovarem si el bean es crea per a la classe de controlador que hem afegit. Per a això, l'aplicació hauria de començar quan s'executi la prova.
Per aconseguir-ho, afegirem @ SpringBootTest anotació que garanteix l'execució del context de l'aplicació abans que s'executi la prova.
A continuació es mostra el codi de prova:
@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 } }
Al codi anterior, podeu veure que hem utilitzat @SpringBootTest anotació que garanteix iniciar l'ApplicationContext abans que s'executi la prova i també hem connectat automàticament el bean WebController segons les anotacions de primavera.
La prova valida que el bean Webcontroller s'instancia com a part del context de l'aplicació.
Vegem una altra prova, on assolirem el punt final exposat pel controlador web i validarem el codi de resposta i el text de resposta a través de les classes de prova del framework Spring, és a dir, MockMvc i MockMvcRequestBuilders.
Consulteu el codi de prova següent:
@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!' } }
Integració de Spock Selenium
Aquí teniu un vídeo tutorial:
Vegem ara un exemple de com podem integrar proves basades en seleni mitjançant Spock. Aquests no requereixen cap altra dependència específica, però, en general, podeu utilitzar les formes existents per organitzar proves de seleni mitjançant BDD amb més eficàcia.
En aquest Exemple, veurem una prova de seleni senzilla mitjançant ChromeWebDriver que intenta cercar una paraula clau a la cerca de Google i verificar el títol de la pàgina de resultats de la cerca.
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') } }
Fixeu-vos en com hem declarat la instància de webdriver per a ChromeDriver i la hem utilitzat a l'especificació.
A més, en un pas determinat, hem declarat / definit tots els elements web que necessitaríem per a l'execució de la prova.
El framework Spock també es pot integrar i utilitzar amb el framework Automation existent i només podem substituir les proves basades en Java / JUnit per Spock per utilitzar el poder de la programació declarativa a Groovy.
Conclusió
En aquest tutorial, hem explorat les diferents maneres d’integrar proves basades en Spock amb altres marcs i tipus de proves, com ara proves d’integració i proves End-2-End.
Vam veure exemples d’integració de Spock amb Spring Framework i proves d’integració basades en seleni. De manera similar, Spock també es pot utilitzar per escriure proves amb clients Rest per a proves d’integració d’APIs basades en REST.
Prepareu-vos ràpidament per a una entrevista a Spock amb el vostre proper tutorial, que abasta una llista de les preguntes d’entrevistes a Spock més importants.
Lectura recomanada
- Proves d’unitat d’escriptura amb Spock Framework
- Preguntes d'entrevistes amb respostes a Spock (més populars)
- Spock burleta i obstrucció (exemples amb tutorials de vídeo)
- Proves basades en dades o parametritzades amb Spock Framework
- Spock Tutorial: proves amb Spock i Groovy
- Integració de seleni amb JMeter
- Les diferències entre la prova unitària, la prova d’integració i la prova funcional
- Proves funcionals contra proves no funcionals