spock integration
Spock za integracijsko ispitivanje (poput usluga odmora) i za funkcionalno testiranje (sa selenom):
Istražili smo oko Ruganje, stubiranje i špijuniranje u Spocku u našem prethodnom vodiču.
U ovome Cijela serija lekcija o treningu na Spocku , do sada smo obrađivali, pisanje jedinstvenih testova koristeći Spockov okvir. Jedinstveni testovi, obično testiraju jednu klasu sa svim integracijskim točkama ili se vanjski pozivi zamjenjuju lažnim pozivima ili kvara.
Integracijski testovi, nasuprot tome, testiraju točke integracije između 2 dijela. Na primjer, testiranje ugovora između 2 usluge, testiranje integracije između usluge i baze podataka itd.
U ovom uputstvu naučit ćemo kako koristiti Spock za Integracijsko ispitivanje (poput usluga odmora) i for funkcionalno ispitivanje . Na primjer , Integriranje Spocka sa selenom itd.
Evo video vodiča:
Što ćete naučiti:
Proljetna Spock integracija
Pokušajmo to razumjeti na primjeru, kako Spock možemo integrirati s aplikacijama temeljenim na Spring boot MVC.
pitanja za intervju za testiranje softvera za iskusne
Iako Spring ima bogat skup bilješki i dobro se integrira s JUnit-om, Spock dodaje ili pomaže u dodavanju pristupa testiranja u BDD stilu koji se lako čita, što čini specifikacije testa vrlo čitljivima.
O aplikaciji
Upotrijebit ćemo gradle utemeljenu na gradle aplikaciji za pokretanje s pokretačem, s upravljačem na temelju odmora koji implementira krajnju točku.
Potrebne ovisnosti
Uz ovisnosti o proljetnom pokretanju, dodat ćemo uobičajenu ovisnost o groovy kompajliranju kao i ovisnost o Spockovoj jezgri. Još jedna ovisnost temeljena na Spocku je Spock-spring , koji omogućuje Spockovim specifikacijama upotrebu napomena na temelju proljeća.
Dolje je naveden popis potrebnih ovisnosti:
- implementacija ‘org.springframework.boot: spring-boot-starter’
- testImplementation 'org.springframework.boot: spring-boot-starter-test'
- sastaviti “org.codehaus.groovy: groovy-all: 2.4.8”
- testCompile “org.spockframework: spock-core: 1.2-groovy-2.4”
- testCompile grupa: ‘org.spockframework’, naziv: ‘spock-spring’, inačica: ‘1.2-groovy-2.4’
Početak rada
Krenimo sa stvarnim testom.
U prvom ćemo testu provjeriti stvara li se grah za klasu kontrolera koju smo dodali. Zbog toga bi aplikacija trebala započeti kada se test pokrene.
Da bismo to postigli, dodati ćemo @ SpringBootTest napomena koja osigurava pokretanje konteksta aplikacije prije izvođenja testa.
Ispod je testni kod:
@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 } }
U gornjem kodu možete vidjeti da smo koristili @SpringBootTest napomena koja osigurava pokretanje ApplicationContext-a, prije nego što se test izvrši, a također smo automatski povezali grah WebController prema proljetnim napomenama.
Test potvrđuje da se komponenta Webcontroller instancira kao dio konteksta aplikacije.
Pogledajmo još jedan test, gdje ćemo Web kontrolorom pogoditi izloženu krajnju točku i provjeriti kôd odgovora kao i tekst odgovora kroz probne klase proljetnih okvira, tj. MockMvc i MockMvcRequestBuilders.
Pogledajte donji testni kod:
@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 selenska integracija
Evo video vodiča:
Sada ćemo vidjeti primjer kako možemo integrirati testove na bazi selena pomoću Spocka. Oni ne zahtijevaju drugu specifičnu ovisnost, ali općenito, možete koristiti postojeće načine za učinkovitiju organizaciju testova selena pomoću BDD-a.
U ovome Primjer, vidjet ćemo jednostavan test selena putem ChromeWebDriver-a koji pokušava potražiti ključnu riječ na google pretraživanju i provjeriti naslov stranice rezultata pretraživanja.
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') } }
Primijetite kako smo deklarirali instancu webdriver za ChromeDriver i koristili se u okviru specifikacije.
Također, u danom smo koraku deklarirali / definirali sve web elemente koji su nam potrebni za izvršavanje testa.
Spockov okvir također se može integrirati i koristiti s postojećim okvirom automatizacije, a testove temeljene na Java / JUnit možemo zamijeniti Spockom kako bi iskoristili snagu deklarativnog programiranja u Groovyu.
Zaključak
U ovom smo uputstvu istražili različite načine integracije testova temeljenih na Spocku s drugim okvirima i vrstama testova, poput integracijskih testova i End-2-End testova.
Vidjeli smo primjere Spockove integracije s Spring framework-om i integracijskih testova temeljenih na selenu. Slično ovim, Spock se također može koristiti za pisanje testova s ostalim klijentima za integracijsko testiranje API-ja temeljenih na REST-u.
Brzo se pripremite za Spock Intervju sa svojim predstojećim uputstvom, koje pokriva popis najvažnijih Pitanja za Spock Intervju !!
Preporučena literatura
- Pisanje jedinstvenih testova sa Spock Frameworkom
- Spock intervju pitanja s odgovorima (najpopularnije)
- Spock ruganje i nabacivanje (primjeri uz video upute)
- Podaci vođeni ili parametarsko testiranje sa Spock Frameworkom
- Vodič za Spock: Testiranje sa Spockom i Groovyjem
- Integracija selena s JMeterom
- Razlike između jedinstvenog testiranja, integracijskog ispitivanja i funkcionalnog ispitivanja
- Funkcionalno ispitivanje vs nefunkcionalno testiranje