spock integration
Spock voor integratietests (zoals Rest Services) en voor functionele tests (met selenium):
We verkenden Bespotten, stoten en spioneren in Spock in onze vorige tutorial.
In deze Volledige serie trainingslessen op Spock tot nu toe hebben we het gehad over het schrijven van unit-tests met behulp van het Spock-framework. Unit tests, test doorgaans een enkele klasse met alle integratiepunten of externe oproepen worden vervangen door nepoproepen of stubs.
Integratietests, daarentegen, testen de integratiepunten tussen 2 stukken. Bijvoorbeeld, het testen van de contracten tussen 2 services, het testen van de integratie tussen service en database, etc.
In deze tutorial leren we hoe je Spock kunt gebruiken voor Integratietesten (zoals rustdiensten) en voor functioneel testen Bijvoorbeeld , Spock integreren met Selenium, etc.
Hier is een video-tutorial:
Wat je leert:
Spring Spock-integratie
Laten we dit eens proberen te begrijpen met een voorbeeld van hoe we Spock kunnen integreren met op Spring boot MVC gebaseerde apps.
gratis timesheet-app voor iPhone en Android
Hoewel Spring een rijke reeks annotaties heeft en goed integreert met JUnit, voegt Spock een gemakkelijk leesbare testaanpak in BDD-stijl toe of helpt deze toe te voegen, waardoor testspecificaties zeer leesbaar worden.
Over de applicatie
We zullen een op gradaties gebaseerde spring-opstarttoepassing gebruiken, met een op rust gebaseerde controller die een eindpunt implementeert.
Vereiste afhankelijkheden
Naast de afhankelijkheden voor het opstarten van de lente, zullen we de gebruikelijke groovy compileerafhankelijkheid en een Spock-kernafhankelijkheid toevoegen. Een andere op Spock gebaseerde afhankelijkheid is Spock-lente , waardoor Spock-specificaties Spring-gebaseerde annotaties kunnen gebruiken.
Hieronder staat de lijst met vereiste afhankelijkheden:
- implementatie ‘org.springframework.boot: spring-boot-starter’
- testImplementation ‘org.springframework.boot: spring-boot-starter-test’
- compileer 'org.codehaus.groovy: groovy-all: 2.4.8'
- testCompile 'org.spockframework: spock-core: 1.2-groovy-2.4'
- testCompile groep: ‘org.spockframework’, naam: ‘spock-spring’, versie: ‘1.2-groovy-2.4’
Beginnen
Laten we beginnen met de daadwerkelijke test.
In de eerste test zullen we controleren of de bean wordt aangemaakt voor de controllerklasse die we hebben toegevoegd. Hiervoor moet de applicatie worden gestart wanneer de test wordt uitgevoerd.
Om dit te bereiken zullen we @ SpringBootTest annotatie die ervoor zorgt dat de toepassingscontext wordt uitgevoerd voordat de test wordt uitgevoerd.
Hieronder staat de testcode:
In de bovenstaande code kun je zien dat we deze hebben gebruikt @RTLnieuws annotatie die ervoor zorgt dat de ApplicationContext wordt gestart voordat de test wordt uitgevoerd en we hebben ook de WebController-bean automatisch bedraad volgens de Spring-annotaties.
De test valideert dat de Webcontroller-bean wordt geïnstantieerd als onderdeel van de toepassingscontext.
Laten we nog een test bekijken, waarbij we het blootgestelde eindpunt door de webcontroller raken en de responscode en de responstekst valideren via de Spring-frameworktestklassen, d.w.z. MockMvc en MockMvcRequestBuilders.
Raadpleeg de onderstaande testcode:
Spock Selenium-integratie
Hier is een video-tutorial:
Laten we nu een voorbeeld bekijken van hoe we op selenium gebaseerde tests kunnen integreren met Spock. Deze vereisen geen andere specifieke afhankelijkheid, maar over het algemeen kunt u de bestaande manieren gebruiken om seleniumtests te organiseren met BDD effectiever.
In deze Voorbeeld, we zullen een eenvoudige seleniumtest zien via ChromeWebDriver die probeert te zoeken naar een trefwoord op Google Zoeken en de titel van de pagina met zoekresultaten te verifiëren.
Merk op hoe we de webdriver-instantie voor ChromeDriver hebben gedeclareerd en binnen de specificatie hebben gebruikt.
Ook hebben we in een bepaalde stap alle webelementen gedeclareerd / gedefinieerd die we nodig zouden hebben voor het uitvoeren van tests.
Het Spock-framework kan ook worden geïntegreerd en gebruikt met het bestaande Automation-framework en we kunnen Java / JUnit-gebaseerde tests gewoon vervangen door Spock om de kracht van declaratief programmeren in Groovy te gebruiken.
Gevolgtrekking
In deze tutorial hebben we de verschillende manieren onderzocht om op Spock gebaseerde tests te integreren met andere frameworks en testtypen, zoals integratietests en end-2-end-tests.
We zagen voorbeelden van Spock-integratie met Spring-framework en op selenium gebaseerde integratietests. Net als deze kan Spock ook worden gebruikt om tests te schrijven met Rest-clients voor integratietests van op REST gebaseerde API's.
Bereid je snel voor op een Spock-interview met je aanstaande tutorial, die een lijst bevat van de belangrijkste Spock-interviewvragen !!
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- Unit-tests schrijven met Spock Framework
- Spock-interviewvragen met antwoorden (meest populair)
- Spock Mocking and Stubbing (voorbeelden met videotutorials)
- Datagestuurd of geparametriseerd testen met Spock Framework
- Spock-zelfstudie: testen met Spock en Groovy
- Integratie van selenium met JMeter
- De verschillen tussen unit-tests, integratietests en functionele tests
- Functioneel testen versus niet-functioneel testen