Spock VS Cucumber: De strijd tussen test frameworks

Freelance opdracht

Jonathan is senior Juvo consultant, gespecialiseerd in Java development.

Als gepassioneerd kennisdeler is hij een essentiële schakel in het vormen van multidisciplinaire teams.

Het is onmogelijk om individueel alles te weten, maar als team kan dat doel wel bereikt worden.

Jonathan Brites

Senior Java Consultant, Juvo

Zelf ben ik grote fan van het schrijven van testen, helaas komen we maar al te vaak tegen dat testen het laatste is waar aandacht aan geschonken wordt. Nochtans is in de wereld van softwareontwikkeling het verzekeren van de kwaliteit van je code van essentieel belang.

Een groot onderdeel van deze testen zijn onze Unit Tests, vooral in JUnit ontworpen. Deze zijn niet gekend als de beste vrienden van iedereen, maar gelukkig hebben we tegenwoordig ook AI tools die ons kunnen helpen bij het genereren van unit tests op basis van code snippets (losstaand van de kwaliteit van deze testen, maar het is beter dan niets toch? Toch??) 

Waar ik het hier over wil hebben is een andere vorm van testen die mogelijk nog meer dan Unit Tests verwaarloosd worden. Dat zijn de acceptatie tests (uiteraard is dit niet op alle projecten zo, doen jullie dit wel goed op jullie project dan zijn jullie in mijn ogen geweldige mensen!).

Twee populaire frameworks die ons helpen bij het schrijven en onderhouden van acceptatie tests zijn Spock en Cucumber.
In deze blogpost zullen we kijken naar beide frameworks, hun verschillen begrijpen en waarom je mogelijk voor het ene of het andere zou kiezen.

Cucumber: Samenwerken met Gherkin Syntax

Cucumber, wellicht het bekendste framework voor acceptatietests, richt zich volledig op samenwerking tussen teams en acceptatietests.

Het unieke kenmerk is de Gherkin-syntax, waarmee tests geschreven worden in een natuurlijke taal die begrijpelijk is voor niet-technische teamleden.

Laten we kijken naar een eenvoudig Cucumber-voorbeeld voor een aanmeldingsfunctionaliteit.

 

Dit Gherkin-script beschrijft een gebruikers login scenario. De kracht van Cucumber ligt in de mogelijkheid om tests te schrijven in een natuurlijke taal en ze nadien te implementeren in de gewenste programmeertaal.

Spock Framework: Elegant Testen in Groovy en Java

Spock, gebouwd voor Java- en Groovy-applicaties, staat bekend om zijn leesbare syntax en krachtige functies. Deze kunnen we niet enkel voor de acceptatie testen, maar ook voor onze unit tests gebruiken.

Laten we een eenvoudig voorbeeld bekijken van hoe Spock wordt gebruikt voor een eenvoudige wiskundige berekening.

In dit voorbeeld definieert de CalculatorSpec -klasse een test voor de add -methode. Met de “given”, “when” en “then” secties levert Spock leesbare en begrijpelijke tests.

Het gebruik van de Groovy-taal maakt de assertions expressief. De naam van onze test methoden kunnen we hier ook in een natuurlijke taal schrijven, waardoor het ook leesbaar is voor niet-technische collega’s.

Hoe een keuze maken?

Beide frameworks hebben sterke punten en zijn geschikt om acceptatie testen te schrijven.

De cruciale vraag die je jezelf moet stellen is: “wie gaat de acceptatie testen schrijven?”, is het antwoord hier niet-technische teamleden of technisch onderlegde personen?

Voor niet-technische teamleden is het antwoord Cucumber, hierbij hoeven ze hun geen zorgen te maken over de technische uitwerking en kunnen alles gewoon in een natuurlijke taal schrijven. (Zie ook Webinar Utilizing Large Language Models for Test Case generation voor het genereren van deze tests!)

Voor technisch onderlegde personen is het antwoord Spock, het grote voordeel wat Spock hier heeft is dat het ook gebruik maakt van de JVM en naadloos kan worden geïntegreerd met Java-code. Dit maakt het mogelijk om Spock-tests toe te voegen aan bestaande Java- projecten zonder grote wijzigingen en betekent ook dat we onze vertrouwelijke JUnit functionaliteiten hier kunnen gebruiken!

Conclusie

Of je nu kiest voor de samenwerkingsgerichte benadering van Cucumber of voor de krachtige mogelijkheden van Spock, beide frameworks dragen bij aan een robuuste testinfrastructuur.

 

Wil je meer weten over het Spock Framework?

Op 5 december gaan we dit framework detail bekijken tijdens ons volgende webinar.

Schrijf je alvast gratis in als je geïnteresseerd bent!

Webinar: Het Spock Framework

Spock framework