spock integration
Spock for integrasjonstesting (som hviltjenester) og for funksjonstesting (med selen):
Vi utforsket om Spott, stubbing og spionering i Spock i vår forrige opplæring.
I dette Full opplæringsopplæringsserie på Spock , så langt dekket vi, og skrev enhetstester med Spock-rammeverket. Enhetstester, tester vanligvis en enkelt klasse med alle integrasjonspunkter eller eksterne samtaler blir erstattet av mock-samtaler eller stubber.
Integrasjonstester, derimot, tester integreringspunktene mellom to stykker. For eksempel, teste kontraktene mellom to tjenester, teste integrasjon mellom tjeneste og database, etc.
I denne opplæringen lærer vi hvordan du bruker Spock til Integrasjonstesting (som hviletjenester) og for funksjonstesting . For eksempel , Integrering av Spock med Selen, etc.
Her er en videoopplæring:
Hva du vil lære:
Spring Spock Integration
La oss prøve å forstå dette med et eksempel på hvordan vi kan integrere Spock med Spring boot MVC-baserte apper.
hvordan finne nettverkssikkerhetsnøkkel på Windows 10
Selv om Spring har et rikt sett med merknader og integrerer godt med JUnit, legger Spock til eller hjelper til med å legge til en lettlest BDD-stylet testtilnærming som dermed gjør testspesifikasjoner svært lesbare.
Om applikasjonen
Vi vil bruke en gradebasert vårstartstartsapplikasjon, med en hvilebasert kontroller som implementerer et sluttpunkt.
Nødvendige avhengigheter
I tillegg til våravhengighetsavhengighetene, vil vi legge til den vanlige groovy kompileringsavhengigheten samt en Spock-kjerneavhengighet. En annen Spock-basert avhengighet er Spock-vår , som gjør det mulig for Spock-spesifikasjoner å bruke vårbaserte merknader.
Her er listen over nødvendige avhengigheter:
- implementering ‘org.springframework.boot: spring-boot-starter’
- testImplementation ‘org.springframework.boot: spring-boot-starter-test’
- kompiler “org.codehaus.groovy: groovy-all: 2.4.8”
- testCompile “org.spockframework: spock-core: 1.2-groovy-2.4”
- testCompile-gruppe: ‘org.spockframework’, navn: ‘spock-spring’, versjon: ‘1.2-groovy-2.4’
Starter
La oss komme i gang med selve testen.
I den første testen vil vi sjekke om bønnen blir opprettet for kontrollerklassen vi har lagt til. For dette bør applikasjonen komme i gang når testen kjøres.
For å oppnå dette vil vi legge til @ SpringBootTest kommentar som sørger for å kjøre applikasjonskonteksten før testen blir utført.
Nedenfor er testkoden:
@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 } }
I koden ovenfor kan du se at vi har brukt @SpringBootTest merknad som sørger for å starte ApplicationContext, før testen blir utført, og vi har også automatisk koblet WebController-bønne i henhold til vårkommentarene.
Testen validerer at Webcontroller-bønnen blir instantiert som en del av applikasjonskonteksten.
La oss se en annen test, der vi vil treffe det eksponerte endepunktet av webkontrolleren, og validere responskoden så vel som responsteksten gjennom vårens rammeverkstestklasser, dvs. MockMvc og MockMvcRequestBuilders.
Se testkoden nedenfor:
@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 Selen Integration
Her er en videoopplæring:
La oss nå se et eksempel på hvordan vi kan integrere Selen-baserte tester ved hjelp av Spock. Disse krever ingen annen spesifikk avhengighet, men generelt kan du bruke de eksisterende måtene å organisere selentester med BDD mer effektivt.
I dette Eksempel, vi får se en enkel selen-test gjennom ChromeWebDriver som prøver å søke etter et nøkkelord på google-søk og verifisere tittelen på søkeresultatsiden.
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') } }
Legg merke til hvordan vi har erklært webdriverinstansen for ChromeDriver og brukt i spesifikasjonen.
I et gitt trinn har vi også deklarert / definert alle webelementene som vi trenger for testutførelse.
Spock-rammeverket kan også integreres og brukes med eksisterende Automation-rammeverk, og vi kan bare erstatte Java / JUnit-baserte tester med Spock for å utnytte kraften til deklarativ programmering i Groovy.
Konklusjon
I denne opplæringen undersøkte vi de forskjellige måtene å integrere Spock-baserte tester med andre rammer og testtyper som integrasjonstester og slutt-2-slutt-tester.
Vi så eksempler på Spock-integrasjon med Spring framework og Selen-baserte integrasjonstester. I likhet med disse kan Spock også brukes til å skrive tester med Rest-klienter for integrasjonstesting av REST-baserte API-er.
Forbered deg raskt på et Spock-intervju med din kommende opplæring, som dekker en liste over de viktigste Spock-intervjuspørsmålene!
PREV Opplæring | NESTE veiledning
Anbefalt lesing
- Skriveenhetstester med Spock Framework
- Spock Intervjuespørsmål med svar (mest populære)
- Spock Mocking and Stubbing (Eksempler med videoveiledninger)
- Datadrevet eller parametrisert testing med Spock Framework
- Spock Tutorial: Testing With Spock And Groovy
- Integrering av selen med JMeter
- Forskjellene mellom enhetstesting, integrasjonstesting og funksjonstesting
- Funksjonstesting mot ikke-funksjonell testing