Mit Cucumber können Testfälle schön in Worte beschrieben werden. Hier mal ein schneller quick Einstieg.
Eine Testfall Beschreibung kann in Worten mit der Gherkin Syntax geschehen, z.B diese kalender.feature:
|
Feature: Lebenskalender überprüfen Scenario: Ein Lebenskalender aus der Konsole ausdrucken für Frauen Given eine Frau im Alter von 52 Jahren und 10 Monaten Scenario: Ein Lebenskalender aus der Konsole ausdrucken für Männer Given eine Mann im Alter von 52 Jahren und 10 Monaten |
In Eclipse sind die JUnit-Test auch schön lesbar, z.B.:
Für Eclipse gibt es ein Natural 0.7.6 Plug-In für die *.feature Dateien. Das kann leicht über den Eclipse Marketplace installiert werden:
Einfach alles installieren:
Die Testfall implementierung kann z.B. so aussehen. Dieser Testfall gibt nur einen Kalender auf der Konsole aus, deshalb gibt es nur das Generieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
package de.wenzlaff.lebenskalender; import cucumber.api.java.en.Given; /** * Testklasse für den Lebenskalender. * * @author Thomas Wenzlaff * */ public class LebenskalenderCucumber { @Given("^eine Mann im Alter von (\\d+) Jahren und (\\d+) Monaten$") public void generateMann(int jahre, int monate) throws Throwable { Lebenskalender.generate(jahre, monate, false); } @Given("^eine Frau im Alter von (\\d+) Jahren und (\\d+) Monaten$") public void generateFrau(int jahre, int monate) throws Throwable { Lebenskalender.generate(jahre, monate, true); } } |
Eine Testklasse zum starten des Testfalls:
|
package de.wenzlaff.lebenskalender; import org.junit.runner.RunWith; import cucumber.api.junit.Cucumber; /** * Testsuite für den Lebenskalender. * * @author Thomas Wenzlaff * */ @RunWith(Cucumber.class) public class StartCucumberTest { } |
Folgende Abhängigkeiten werden in der pom.xml benötigt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Cucumber Test --> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.2.5</version> <scope>test</scope> </dependency> |
Das ganze Testprojekt kann auf Github geladen werden.
Eine weitergehende Anleitung auf deutsch gibt es hier.