spock integration
Spock za integracijsko testiranje (na primer storitve počitka) in za funkcionalno testiranje (s selenom):
Raziskovali smo približno Posmehovanje, zatiranje in vohunjenje v Spocku v naši prejšnji vadnici.
V tem Celotna vadbena serija o Spocku , doslej smo zajemali pisanje enotnih testov z uporabo Spockovega okvira. Preizkusi enot, običajno preizkusijo en razred z vsemi integracijskimi točkami ali pa zunanje klice zamenjajo lažni klici ali klice.
Integracijski testi, nasprotno, testirajo integracijske točke med dvema kosoma. Na primer, testiranje pogodb med dvema storitvama, testiranje integracije med storitvijo in bazo podatkov itd.
V tej vadnici bomo izvedeli, kako uporabljati Spock za Integracijsko testiranje (na primer storitve počitka) in za funkcionalno preskušanje . Na primer , Integracija Spocka s selenom itd.
Tu je video vadnica:
Kaj se boste naučili:
Spring Spock integracija
Poskusimo to razumeti na primeru, kako lahko Spock integriramo z aplikacijami, ki temeljijo na Spring boot MVC.
j2ee vprašanja in odgovori za starejše razvijalce
Čeprav Spring vsebuje bogat nabor pripisov in se dobro integrira z JUnit, Spock doda ali pomaga dodati brskalni pristop testiranja, ki ga je mogoče enostavno prebrati, zaradi česar so testne specifikacije zelo berljive.
O aplikaciji
Uporabili bomo aplikacijo za pomladni zagonski zaganjalnik, ki temelji na gradle, s krmilnikom, ki temelji na počitku, ki izvaja končno točko.
Zahtevane odvisnosti
Poleg odvisnosti spomladanskega zagona bomo dodali še običajno groovy odvisnost prevajanja in odvisnost od Spockovega jedra. Druga odvisnost, ki temelji na Spocku, je Spock-spring , ki omogoča Spockovim specifikacijam uporabo opomb na osnovi Spring.
Spodaj je naveden seznam zahtevanih odvisnosti:
- izvedba ‘org.springframework.boot: spring-boot-starter’
- testImplementation ‘org.springframework.boot: spring-boot-starter-test’
- prevedite “org.codehaus.groovy: groovy-all: 2.4.8”
- testCompile “org.spockframework: spock-core: 1.2-groovy-2.4”
- testSkupina skupine: 'org.spockframework', ime: 'spock-spring', različica: '1.2-groovy-2.4'
Kako začeti
Začnimo z dejanskim testom.
V prvem preizkusu bomo preverili, ali se fižol ustvari za razred krmilnika, ki smo ga dodali. V ta namen se mora aplikacija zagnati ob zagonu testa.
Da bi to dosegli, bomo dodali @ SpringBootTest pripis, ki zagotavlja zagon konteksta aplikacije pred izvajanjem testa.
Spodaj je testna koda:
@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 } } V zgornji kodi lahko vidite, da smo uporabili @SpringBootTest pripis, ki zagotavlja zagon ApplicationContext-a, preden se preizkus izvede, prav tako pa smo samodejno povezali fižol WebController v skladu s pripombami Spring.
Preizkus potrdi, da se gradnik Webcontroller ustvari kot del konteksta aplikacije.
Oglejmo si še en test, kjer bomo s pomočjo spletnega krmilnika zadeli izpostavljeno končno točko in validirali odzivno kodo in odzivno besedilo skozi preskusne razrede Spring framework, tj. MockMvc in MockMvcRequestBuilders.
Glejte spodnjo testno kodo:
@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 integracija selena
Tu je video vadnica:
Zdaj pa si oglejmo primer, kako lahko s Spockom integriramo tesne na osnovi selena. Ti ne zahtevajo nobene druge posebne odvisnosti, na splošno pa lahko na obstoječe načine učinkoviteje organizirate teste selena z uporabo BDD.
V tem Primer, bomo videli preprost test selena prek ChromeWebDriver, ki poskuša poiskati ključno besedo v Googlovem iskanju in preveriti naslov strani z rezultati iskanja.
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') } } Upoštevajte, kako smo razglasili primerek webdriver za ChromeDriver in ga uporabili v specifikaciji.
Prav tako smo v danem koraku razglasili / definirali vse spletne elemente, ki bi jih potrebovali za izvajanje preizkusa.
Okvir Spock je mogoče tudi integrirati in uporabljati z obstoječim okvirom za avtomatizacijo, preskuse na osnovi Java / JUnit pa lahko nadomestimo s Spockom, da izkoristimo moč deklarativnega programiranja v Groovyju.
Zaključek
V tej vadnici smo raziskali različne načine integracije testov, ki temeljijo na Spocku, z drugimi ogrodji in vrstami testov, kot so integracijski testi in preskusi End-2-End.
Videli smo primere Spockove integracije s Spring framework in integracijskimi testi na osnovi selena. Podobno kot Spock se lahko uporablja tudi za pisanje testov z odjemalci Rest za integracijsko testiranje API-jev, ki temeljijo na REST.
Hitro se pripravite na Spock Intervju s prihajajočo vadnico, ki zajema seznam najpomembnejših vprašanj Spock Interview !!
PREV Vadnica | NASLEDNJA Vadnica
Priporočeno branje
- Pisanje enotnih testov s Spock Framework
- Vprašanja za intervju z Spockom (odgovori) (najbolj priljubljeni)
- Spock posmehovanje in zatiranje (primeri z video vajami)
- Podatkovno ali parametrizirano testiranje s Spock Framework
- Vadnica za Spock: Testiranje s Spockom in Groovyjem
- Integracija selena z JMeter
- Razlike med preskušanjem enot, preskušanjem integracije in funkcionalnim preskušanjem
- Funkcionalno testiranje vs nefunkcionalno testiranje