JUnit 5 Quickie: @CsvSource
Mit der @CsvSource Annotation in JUnit 5 kann man mit Kommaseparierte Parameter leicht und übersichtliche Tests schreiben. Die API ist aber noch im EXPERIMENTAL Status.
Hier mal ein Beispiel. Für jeden Kommandozeilen Parameter eine Testmethode schreiben:
„JUnit 5 Quickie: @CsvSource“ weiterlesen
JUnit 5 Quickie: @nested 入れ子 und public optional
Es muss ja nicht immer Fussball und Weltmeisterschaft sein! Neue Annotation für JUnit 5 – Tags sind auch spannend!
Mit den neuen Tags (org.junit.jupiter.api.Tag) können Methoden und auch ganze Klassen getagt werden, um sie z.B. in Gruppen einzuteilen.
Eine Testgruppe könnte z.B. eine langlaufende DB Methoden sein, die nicht immer ausgeführt werden soll.
Ein Tag muss folgenden Syntax Regeln folgen:
-ein Tag darf nicht Leer sein
-ein Tag darf keine Leerzeichen enthalten
-ein Tag darf keine ISO Kontroll Zeichen enthalten
-ein Tag darf kein, (, ), %, | oder ! Zeichen enthalten
Eine Testklasse zur WM 2018 könnte so aussehen:
„Es muss ja nicht immer Fussball und Weltmeisterschaft sein! Neue Annotation für JUnit 5 – Tags sind auch spannend!“ weiterlesen
Gurken-Test mit Cucumber
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:
1 2 3 4 5 6 7 8 9 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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.
JUnit 4.12 erschienen
Nach über 2 Jahren ist nun eine neue Version von JUnit veröffentlicht worden. Die Releasenotes sind auf Github zu finden. In folgenden Bereichen gab es Ergänzungen:
- Assertions
- Command-line options
- Test Runners
- Exception Testing
- Timeout for Tests
- Parameterized Tests
- Rules
- Theories
- Categories
- Use with Maven
- Miscellaneous
Ok, dann mal gleich das aktuelle Maven Projekt TWFlug auf die neue Version 4.12 angepasst:
1 2 3 4 5 6 7 8 9 10 |
<properties> <junit.version>4.12</junit.version> </properties> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> |
Mehr über JUnit oder drei Gründe warum man keine JUnit-Tests schreiben sollte.
SelBlocks für Selenium installieren oder „Wer testet ist feige“
Das Plug-In SelBlocks für die Selenium IDE darf nicht fehlen. Also über diese Seite installieren und den Browser neu starten:
Das Plugin ist eine Erweiterung für die Selenium IDE und fügt der IDE die folgenden doch immer nötigen Befehle hinzu:
- if, elseIf, else
- try, catch, finally, throw
- for, foreach, while, continue, break
- call, function, return
- loadJsonVars, loadXmlVars, forJson, forXml
- exitTest
Die Selenium IDE muss natürlich vorhanden sein:
Eine ausführliche Beschreibung und auch Beispielen sind auf dieser Seite zu finden.