spock tutorial testing with spock
Hands-on Spock Tutorial-serie: Testen met Spock-framework en Groovy Programming Language
Deze reeks tutorials zou uw kennis over Spock Framework volledig verrijken.
In elke tutorial zijn eenvoudige en duidelijke voorbeelden opgenomen, zodat u het concept gemakkelijk kunt begrijpen.
Maak je klaar om Spock gratis te leren !!
Lijst met alle Spock-tutorials in deze serie:
Leer Spock in detail met behulp van deze intensieve Spock-trainingsserie voor beginners en ervaren professionals.
Tutorial # | Koppeling |
---|---|
Zelfstudie # 1 | Inleiding tot Spock en Groovy |
Tutorial # 2 | Unit-tests schrijven met Spock |
Tutorial # 3 | Geparametriseerd testen met Spock |
Tutorial # 4 | Spock bespotten en stoten |
Zelfstudie # 5 | Spock met selenium functionele test |
Tutorial # 6 | Spock Interview Vragen |
Overzicht van tutorials in Spock Series
Tutorial_Num | Wat je gaat leren |
---|---|
Zelfstudie # 1 | Inleiding tot Spock en Groovy Deze inleidende tutorial legt alles uit over Spock, een testframework dat bovenop Groovy is gebouwd. Het dwingt BDD in de kern af en zorgt ervoor dat alle tests die met behulp van het framework zijn geschreven, de BDD-conventies volgen. |
Tutorial # 2 | Unit-tests schrijven met Spock In deze tutorial zullen we alle details / stappen doorlopen die nodig zijn om aan de slag te gaan met Unit testing in Spock, samen met eenvoudige voorbeelden. |
Tutorial # 3 | Geparametriseerd testen met Spock In deze tutorial wordt duidelijk uitgelegd wat geparametriseerde tests zijn en hoe u de ingebouwde functies van Spock kunt gebruiken om gegevensgestuurd testen te bereiken. |
Tutorial # 4 | Spock bespotten en stoten Deze Spock-tutorial zal in detail uitleggen over Mocking en Stubbing, een van de meest essentiële bouwstenen van uitgebreide Unit-tests. |
Zelfstudie # 5 | Spock met selenium functionele test Leer hoe u Spock kunt gebruiken voor integratietests (zoals rustdiensten) en voor functionele tests in deze informatieve tutorial. Bijvoorbeeld: Spock integreren met selenium. |
Tutorial # 6 | Spock Interview Vragen Deze tutorial bevat een lijst met de meest populaire Spock-interviewvragen met antwoorden en voorbeelden. Deze vragen zouden inderdaad iedereen helpen om het spock-interview bij de eerste poging succesvol af te sluiten. |
Wat je leert:
- Wat is Spock?
- Bekijk de video-tutorial over Spock en Groovy
- Wat is Groovy?
- Aan de slag met Spock
- Anatomie van een Spock-specificatie
- Spec Block Beschrijvingen
- Belangrijke tips
- Gevolgtrekking
- Aanbevolen literatuur
Wat is Spock?
Spock is een testraamwerk dat bovenop Groovy is gebouwd. Het dwingt BDD in de kern af en zorgt ervoor dat alle tests die zijn geschreven met behulp van het raamwerk de BDD-conventies volgen.
In tegenstelling tot JUnit heeft Spock ook zijn eigen dubbele mocking- en testbibliotheken en volledige ondersteuning voor geparametriseerde testscenario's.
Het is vanwege dit complete pakket op zich dat de Spock-specificaties super leesbaar en expressief zijn en als gevolg waarvan ze de test maken om steeds meer te bereiken van wat het bedoeld was om de cliché-boilerplate-code te verminderen.
Ondanks al deze coole functies kunnen Spock-tests worden uitgevoerd met behulp van de bestaande JUnit-testrunner en de bestaande opdrachtregel- / buildtools zoals Maven en Gradle, waardoor het nog aantrekkelijker is om te gebruiken. Kortom, Spock combineert alle goede eigenschappen van JUnit, BDD (frameworks zoals JBehave & Komkommer ) evenals spottende.
We zullen een aantal voorbeelden bekijken die elk van deze functies illustreren in de volgende secties.
Bekijk de video-tutorial over Spock en Groovy
Wat is Groovy?
Groovy is een scripttaal voor het Java-platform.
Enkele van de belangrijkste kenmerken van groovy zijn:
# 1) Het kan zowel dynamisch getypeerd worden (waarbij een variabele elk type data kan bevatten) als statisch getypeerd (wat sterk getypeerde constructies afdwingt op variabelen die data bevatten).
Voorbeeld : We hebben array en map op dezelfde manier toegewezen en intern bepaalt groovy het type en behandelt het op de juiste manier.
De uitvoer van het bovenstaande codevoorbeeld is:
klasse java.util.ArrayList
klasse java.util.LinkedHashMap
#twee) Alle geldige Java-code is ook een geldige Groovy-code (maar niet andersom, want het heeft ook extra functies).
# 3) Andere kenmerken zijn meta-programmering, sluitingen, statische typecontrole, enz.
# 4) in tegenstelling tot Java puntkomma's zijn optioneel in groovy en de primitieve typen worden standaard als objecten beschouwd.
Aangezien deze tutorialserie meer op Spock is gericht, leren we alleen die Groovy-functies die essentieel zijn voor het schrijven van op Spock gebaseerde testspecificaties.
Aan de slag met Spock
Laten we, om aan de slag te gaan, eens kijken welke bibliotheken vereist zijn, afhankelijk van het buildsysteem dat u gebruikt (bijv. Gradle / maven).
Voor op Maven gebaseerde projecten
Maven-projecten moeten een plug-in bevatten voor het compileren van Gradle-code en een trefzekere plug-in om groovy gebaseerde specificaties uit te voeren. Naast deze groovy & Spock, afhankelijkheden moet ook worden toegevoegd.
Voor op Gradle gebaseerde projecten
Voor een voorbeeld van een gradle-bestand, zoals hieronder, zijn de belangrijkste vereisten de gradle-plug-in en de afhankelijkheden voor groovy voor code en test.
Anatomie van een Spock-specificatie
Spock-tests kunnen worden geschreven voor elke taal die op JVM draait. Dit betekent dat zelfs als uw applicatiecode in Java of Scala of Kotlin etc. is, u er nog steeds voor kunt kiezen om uw unit / integratietests in Spock te schrijven (in plaats van andere zoals JUnit, JBehave, etc.).
Spock-testklassen worden 'Specificaties' genoemd (vergelijkbaar met Specificaties in de wereld van BDD) en u kunt de 'Specificatie' -klasse van het Spock-framework uitbreiden. (Specificatie is de basisklasse van het Spock-framework).
Elk Spec-bestand kan meerdere tests bevatten (vergelijkbaar met een JUnit-testklassebestand) en elke test kan optioneel de BDD-blokken bevatten, d.w.z. gegeven, wanneer en dan. Dit is vergelijkbaar met andere BDD-frameworks, waarbij elk van deze secties respectievelijk kan worden gecorreleerd met de secties Arrange, Act en Assert in de JUnit-tests.
Hieronder ziet u een blokdiagram met de hiërarchie van specificaties en tests.
Laten we eens kijken hoe een voorbeeldspecificatie eruitziet in de code:
Enkele belangrijke punten om op te merken:
# 1) Kijk naar de naam van de testscenario's (de string na het trefwoord def): 'controleer hoofdletterongevoelige gelijkheid van 2 strings'. Dit zijn gewone Engelse strings en dit maakt de testnamen goed leesbaar en geeft een echt gevoel om te testen wat het bereikt.
Vergelijk het met de gebruikelijke JUnit-test waarbij de testnaam er ongeveer zo uitziet als c.
#twee) Gegeven, wanneer en dan blokken zijn gelijk aan Arrange, Act and Assert. Hieruit kijken we naar het toen (of assert-blok) dat gelijkheidsbevestiging impliceert en alle standaardcode die aan beweringen is gekoppeld, vermijdt.
Voorbeeld , Een bewering in JUnit zou er als volgt hebben uitgezien:
Zoals je hierboven kunt zien, zorgen de Spock-tests ervoor dat de tests er minder uitgebreid uitzien en worden alle standaardcode in beweringen (en setup, enz.)
Spec Block Beschrijvingen
Voor elk van de individuele blokken in een test kunt u ervoor kiezen om een blokbeschrijving als tekenreeks op te geven om meer details te geven over het blok dat wordt uitgevoerd. Dit is handig om de test een meer uitgebreide structuur te geven.
Laten we hieronder een voorbeeld bekijken:
Belangrijke tips
# 1) Alle blokken in een op Spock gebaseerde specificatie zijn optioneel. Indien aanwezig moeten echter 'wanneer' en 'dan' samen achter elkaar verschijnen.
#twee) Als je alleen een bewering moet valideren (en je hebt geen behoefte aan wanneer blokkeren), kun je ' verwachten ”Blok. Het kan worden gebruikt om randvoorwaarden te bevestigen, zelfs voordat wanneer en dan blokkeert (en kan meerdere keren in een test worden gebruikt).
Laten we eens kijken naar een voorbeeldgebruik van verwachting, zoals het valideren van de voorwaarde voordat het 'wanneer' -blok wordt uitgevoerd.
Zoals hierboven getoond, probeert het verwachte blok te bevestigen dat zowel de klassewaarde van de invoervelden als de waarde van een van de ingangen binnen het bereik liggen.
Gevolgtrekking
In deze Spock-tutorial hebben we de basisprincipes van Groovy-programmeertaal behandeld, samen met de anatomie of basisbouwstenen van een Spock-specificatie.
We hebben een voorbeeldproject gemaakt met de vereiste afhankelijkheden om groovy-gebaseerde Spock-specificaties te schrijven en een voorbeeldspecificatie te schrijven.
In de andere tutorials in deze serie gaan we dieper in op de functies van het Spock-framework en leren we hoe ze groovy taal gebruiken om schone en leesbare testspecificaties te creëren.
wat is de beste virusverwijdering
Blijf op de hoogte van onze aanstaande Spock-tutorials om meer te weten te komen over testopstellingen, beweringen en rapportage in Spock.
Aanbevolen literatuur
- Unit-tests schrijven met Spock Framework
- Spock-interviewvragen met antwoorden (meest populair)
- Spock voor integratie en functioneel testen met selenium
- Spock Mocking and Stubbing (voorbeelden met videotutorials)
- Datagestuurd of geparametriseerd testen met Spock Framework
- Diepgaande Eclipse-zelfstudies voor beginners
- Zelfstudie over reflectie in Java met voorbeelden
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration