spock integration
Spock pro testování integrace (jako odpočinkové služby) a pro funkční testování (se selenem):
Prozkoumali jsme to Mocking, Stubbing and Spying in Spock v našem předchozím tutoriálu.
V tomhle Celá řada výcvikových kurzů na Spocku , zatím jsme se zabývali psaním testů jednotek pomocí rámce Spock. Testy jednotek, obvykle testují jednu třídu se všemi integračními body nebo se externí volání nahrazují falešnými voláními nebo stuby.
Testy integrace naopak testují integrační body mezi 2 kusy. Například, testování smluv mezi 2 službami, testování integrace mezi službou a databází atd.
V tomto kurzu se naučíme, jak používat Spock pro Testování integrace (jako odpočinkové služby) a pro funkční testování . Například , Integrace Spock se selenem atd.
Zde je videonávod:
Co se naučíte:
Integrace Spring Spock
Zkusme to pochopit na příkladu, jak můžeme integrovat Spock s aplikacemi založenými na Spring boot MVC.
pomocí regexu v c ++
Ačkoli Spring má bohatou sadu anotací a dobře se integruje s JUnit, Spock přidává nebo pomáhá přidat snadno čitelný přístup k testování BDD ve stylu, díky čemuž jsou specifikace testu vysoce čitelné.
O aplikaci
Použijeme spouštěcí pružinovou spouštěcí aplikaci založenou na gradle s kontrolerem založeným na odpočinku implementujícím koncový bod.
Požadované závislosti
Kromě závislostí spouštění na jaře přidáme obvyklou závislost kompilace groovy i závislost jádra Spock. Další závislost na Spocku je Spock-pružina , což umožňuje specifikacím Spocku používat jarní anotace.
Níže je uveden seznam požadovaných závislostí:
- implementace „org.springframework.boot: spring-boot-starter“
- testImplementation ‘org.springframework.boot: spring-boot-starter-test‘
- kompilace „org.codehaus.groovy: groovy-all: 2.4.8“
- testCompile „org.spockframework: spock-core: 1,2-groovy-2,4“
- skupina testCompile: „org.spockframework“, název: „spock-spring“, verze: „1.2-groovy-2.4“
Začínáme
Začněme s vlastním testem.
V prvním testu zkontrolujeme, zda se fazole vytvoří pro třídu řadičů, kterou jsme přidali. K tomu by měla být aplikace spuštěna při spuštění testu.
Abychom toho dosáhli, přidáme @ SpringBootTest anotace, která zajišťuje spuštění aplikace Context před provedením testu.
Níže 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 } }
Ve výše uvedeném kódu vidíte, že jsme použili @SpringBootTest anotace, která zajišťuje spuštění ApplicationContext, než se test provede a my jsme také automaticky připojili fazole WebController podle anotací Spring.
Test ověří, že bean Webcontroller bude instancován jako součást kontextu aplikace.
Podívejme se na další test, kde webový řadič zasáhne exponovaný koncový bod, a ověříme kód odpovědi i text odpovědi prostřednictvím testovacích tříd Spring Framework, tj. MockMvc a MockMvcRequestBuilders.
Přečtěte si níže uvedený testovací kód:
@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!' } }
Integrace Spock Selenium
Zde je videonávod:
Nyní se podívejme na příklad, jak můžeme pomocí Spocku integrovat testy založené na selenu. Ty nevyžadují žádnou další konkrétní závislost, ale obecně můžete použít existující způsoby, jak efektivněji organizovat testy selenu pomocí BDD.
V tomhle Příklad, uvidíme jednoduchý test selenu prostřednictvím ChromeWebDriver, který se pokusí vyhledat klíčové slovo ve vyhledávání Google a ověřit název stránky s výsledky vyhledávání.
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šimněte si, jak jsme deklarovali instanci webdriveru pro ChromeDriver a použili jsme ji ve specifikaci.
V daném kroku jsme také deklarovali / definovali všechny webové prvky, které bychom potřebovali pro provedení testu.
Rámec Spock lze také integrovat a použít s existujícím rámcem Automation a my můžeme jen nahradit testy založené na Javě / JUnit Spockem, abychom využili sílu deklarativního programování v Groovy.
Závěr
V tomto kurzu jsme prozkoumali různé způsoby integrace testů založených na Spocku s jinými rozhraními a typy testů, jako jsou testy integrace a testy End-2-End.
Viděli jsme příklady Spockovy integrace s Spring frameworkem a selenovými integračními testy. Podobně jako Spock lze také použít k psaní testů s klienty Rest pro testování integrace API založených na REST.
Rychle se připravte na Spock Interview s vaším nadcházejícím tutoriálem, který obsahuje seznam nejdůležitějších otázek Spock Interview !!
Výukový program PREV | DALŠÍ výuka
Doporučené čtení
- Psaní testů jednotek pomocí Spock Framework
- Spock Interview Otázky s odpověďmi (nejoblíbenější)
- Spock Mocking and Stubbing (Příklady s videonávody)
- Testování na základě dat nebo parametrizace pomocí Spock Framework
- Výukový program Spock: Testování pomocí Spocka a Groovyho
- Integrace selenu s JMeter
- Rozdíly mezi testováním jednotek, testováním integrace a funkčním testováním
- Funkční testování vs. nefunkční testování