Leseproben
Matthias Merdes Heidelberg Mobil

Wichtiger noch als eine größere Eleganz bei der Testdefinition oder die vereinfachte Entwicklung von Erweiterungen ist die grundlegend neu konzipierte Architektur.

Das Testframework JUnit hat seit dem ersten Release wesentlich dazu beigetragen, testgetriebene Entwicklung voranzubringen. Der Legende nach wurde es ursprünglich im Jahr 1997 von Kent Beck und Erich Gamma im Flugzeug per Pair Programming entwickelt und war seitdem Vorbild für viele andere Testframeworks. Nach langer Entwicklung ist mit JUnit 5 endlich das ersehnte Major-Release erschienen. Wir werfen einen Blick auf die wichtigsten neuen Features.

Im Laufe der Jahre hatte es sich gezeigt, dass die zur Verfügung stehenden Konstrukte von JUnit Erweiterungen erschwerten. Auch die Art und Weise, in der IDEs JUnit integrierten, stellte sich als zunehmend hinderlich für die Weiterentwicklung heraus. Dazu kommt, dass die vorherigen Versionen keine Sprachfeatures von Java 8 unterstützen konnten, weil stets die Kompatibilität zu Java 5 gewahrt bleiben musste. Nach längerer Zeit ohne neue Releases und ohne grundlegende Modernisierungsmöglichkeit hat im Oktober 2015 die Entwicklung der vollständig überarbeiteten Version 5 begonnen. Nach einer Startfinanzierung durch die Crowdfunding-Kampagne JUnit Lambda begann im Oktober 2015 die Planung der neuen Version bei einem Workshop mit dem Core-Committer-Team und Herstellern der Tools Eclipse, Intellij IDEA, Gradle und Spring. Nach einem Prototyp und einer Reihe von Milestone-Releases ist im Sommer 2017 mit Version 5.0.0 GA das erste Produktionsrelease der neuen Version erschienen. Version 5.1 ist bereits in Planung.

Ich stelle einige neue Features der neuen Version 5 vor, die für das Schreiben von Tests und damit für alle Entwickler wichtig sind. Als Einstieg soll ein minimalistisches Beispiel dienen, bevor ich einige fortgeschrittene oder grundsätzlich neue Feature vorstelle. Alles Folgende bezieht sich auf die neue JUnit-Jupiter-Test-Engine. Wie es nahe liegt, heißt die wichtigste Annotation immer noch @Test. Im Unterschied zu JUnit 4 muss man allerdings ein anderes Package importieren: org.junit.jupiter.api anstelle von org.junit. Hierbei bezeichnet jupiter die Test-Engine, die das neue JUnit-5-Programmiermodell unterstützt. Die neue JUnit-Plattform unterstützt die Koexistenz verschiedener Test-Engines.

 @BeforeALL
static void setupServer() {}

@BeforeEach
void prepareDatabase() {}

@Test
void myTest() {}

@AfterEach
void cleanupDatabase() {}

@AfterALL
static void tearDownServer {}

Man erkennt in Listing 1, dass sich die Namen der Lifecycle-Methoden im Vergleich zu JUnit 4 geändert haben. Die neue Nomenklatur ist das Ergebnis langer Diskussionen und versucht, die Bedeutung noch deutlicher hervorzuheben, als es bisher der Fall war. @BeforeAll wird einmal pro Testklasse aufgerufen, @BeforeEach vor jeder einzelnen Testmethode. Gleiches gilt für die After-Methoden. Erwähnenswert ist ebenfalls, dass der Modifier public entfallen kann.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 1.18 - "Extreme Java"

Alle Infos zum Heft
579821770Die Highlights von JUnit 5
X
- Gib Deinen Standort ein -
- or -