spock integration
Spock pre testovanie integrácie (napríklad Rest Services) a funkčné testovanie (so selénom):
Preskúmali sme asi Vysmievanie, pichanie a špehovanie v Spockovi v našom predchádzajúcom návode.
V tomto Celá séria výučbových školení na Spocku , zatiaľ sme sa zaoberali písaním testov jednotiek pomocou rámca Spock. Testy jednotiek zvyčajne testujú jednu triedu so všetkými integračnými bodmi alebo externé hovory sú nahradené falošnými hovormi alebo stubmi.
Integračné testy naopak testujú integračné body medzi 2 kusmi. Napríklad, testovanie zmlúv medzi 2 službami, testovanie integrácie medzi službou a databázou atď.
V tomto tutoriále sa naučíme, ako používať Spock pre Testovanie integrácie (ako odpočívadlá) a pre funkčné testovanie . Napríklad , Integrácia Spocka so selénom atď.
Tu je videonávod:
Čo sa dozviete:
Integrácia Spring Spock
Pokúsme sa to pochopiť na príklade, ako môžeme integrovať Spock s aplikáciami založenými na Spring Boot MVC.
inicializácia statických premenných c ++
Aj keď má Spring bohatú sadu anotácií a dobre sa integruje do JUnit, Spock pridáva alebo pomáha pridávať ľahko čitateľný prístup k testovaniu v štýle BDD, vďaka čomu je testovacia špecifikácia veľmi dobre čitateľná.
O aplikácii
Použijeme aplikáciu na štartovanie pružinového bootovacieho zariadenia založenú na gradle, s odpočinkovým radičom implementujúcim koncový bod.
Požadované závislosti
Okrem závislostí jarného zavedenia pridáme obvyklú závislosť kompilácie groovy, ako aj závislosť jadra Spock. Ďalšou závislosťou založenou na Spocku je Spock-pružina , ktorý umožňuje špecifikáciám Spocku používať jarné anotácie.
Nižšie je uvedený zoznam požadovaných závislostí:
- implementácia „org.springframework.boot: spring-boot-starter“
- testImplementation ‘org.springframework.boot: spring-boot-starter-test‘
- kompilujte „org.codehaus.groovy: groovy-all: 2.4.8“
- testCompile „org.spockframework: spock-core: 1,2-groovy-2,4“
- testCompile group: „org.spockframework“, názov: „spock-spring“, verzia: „1.2-groovy-2.4“
Začíname
Začnime skutočným testom.
V prvom teste skontrolujeme, či sa fazuľa vytvorí pre triedu radiča, ktorú sme pridali. Aplikácia by sa preto mala spustiť po spustení testu.
Aby sme to dosiahli, pridáme @ SpringBootTest anotácia, ktorá zabezpečí spustenie kontextu aplikácie pred vykonaním testu.
Nižšie je uvedený testovací kód:
@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 } }
Vo vyššie uvedenom kóde vidíte, že sme použili @SpringBootTest anotácia, ktorá zaisťuje spustenie ApplicationContext pred vykonaním testu a tiež sme automaticky zapojili fazuľu WebController podľa jarných anotácií.
Test potvrdzuje, že fazuľa Webcontroller sa dostane do inštancie ako súčasť kontextu aplikácie.
Pozrime sa na ďalší test, kde narazíme na exponovaný koncový bod webovým radičom, a overíme kód odpovede, ako aj text odpovede prostredníctvom tried testovania jarného rámca, tj. MockMvc a MockMvcRequestBuilders.
Prečítajte si testovací kód uvedený nižšie:
@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!' } }
Integrácia Spock Selenium
Tu je videonávod:
Teraz si ukážeme príklad toho, ako môžeme pomocou Spocku integrovať testy založené na seléne. Nevyžadujú si inú špecifickú závislosť, ale vo všeobecnosti môžete využiť existujúce spôsoby efektívnejšej organizácie selénových testov pomocou BDD.
V tomto Príklad, uvidíme jednoduchý test selénu prostredníctvom prehliadača ChromeWebDriver, ktorý sa pokúsi vyhľadať kľúčové slovo vo vyhľadávaní Google a overiť nadpis stránky s výsledkami vyhľadávania.
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') } }
Všimnite si, ako sme deklarovali inštanciu webdriveru pre ChromeDriver a použili sme ju v rámci špecifikácie.
V danom kroku sme tiež deklarovali / definovali všetky webové prvky, ktoré by sme potrebovali na vykonanie testu.
Rámec Spock možno tiež integrovať a použiť s existujúcim rámcom Automation a my môžeme iba nahradiť testy založené na prostredí Java / JUnit Spockom, aby sme využili silu deklaratívneho programovania v Groovy.
Záver
V tomto tutoriáli sme preskúmali rôzne spôsoby integrácie testov založených na Spocku s inými rámcami a typmi testov, ako sú integračné testy a testy typu End-2-End.
Videli sme príklady integrácie Spocku s Spring frameworkom a selénovými integračnými testami. Podobne ako je to možné, Spock sa dá použiť aj na písanie testov s klientmi Rest na testovanie integrácie API založených na REST.
Rýchlo sa pripravte na Spockov rozhovor s vašim pripravovaným tutoriálom, ktorý obsahuje zoznam najdôležitejších otázok o Spockových rozhovoroch !!
Výukový program PREV | NEXT Tutorial
Odporúčané čítanie
- Písanie testov jednotiek s programom Spock Framework
- Spock Interview Otázky s odpoveďami (najobľúbenejšie)
- Spock Mocking and Stubbing (Príklady s videonávodmi)
- Testovanie na základe dát alebo parametrizovanie pomocou Spock Framework
- Výukový program pre Spock: Testovanie s programom Spock a Groovy
- Integrácia selénu s JMeter
- Rozdiely medzi testovaním jednotiek, testovaním integrácie a funkčným testovaním
- Funkčné testovanie vs. Nefunkčné testovanie