Testing auf der JVM

JUnit 5 ist endlich da

Melanie Feldmann

© Shutterstock / PointImages

 

Am gestrigen Sonntag war es endlich so weit: JUnit 5 erblickt offiziell mit dem General Availability Release das Licht der Welt. Das Testing Framework bringt einige Veränderungen mit sich, die Migration bestehender Tests soll aber problemlos möglich sein.

JUnit 5 besteht aus verschiedenen Modulen der Sub-Projekte. Namentlich aus der JUnit Platform, JUnit Jupiter und JUnit Vintage. Die JUnit Platform ist die Basis für Test Framworks auf der JVM. Es definiert das TestEngine API für das Entwickeln eines Testing Frameworks, das auf der Plattform läuft. Außerdem bietet die Plattform einen Console Launcher, damit Anwender die Plattform von der Kommandozeile aus starten können und Plug-ins für Gradle oder Maven bauen können. Zusätzlich ist es so möglich, einen JUnit 4 Runner zu erstellen, der es erlaubt jede TestEngine auf der Plattform laufen zu lassen. JUnit Jupiter ist eine Kombination aus dem neuen Programmiermodell und das Extension Model für das Schreiben von Tests und Erweiterungen in JUnit 5. Jupiter liefert auch eine TestEngine mit, um Jupiter-basierte Tests durchzuführen. JUnit Vintage schließlich bietet eine TestEngine für JUnit-3- und JUnit-4-basierte Tests. JUnit 5 braucht mindestens Java 8 oder höher. Entwickler können aber weiterhin Code testen, der in älteren Java-Versionen geschrieben wurde.

Migration von JUnit 4 auf 5

Obwohl das JUnit-Jupiter-Programmiermodel und auch das Extension Model JUnit 4 Features wie Rules oder Runners nicht unterstützen, müssen Entwickler ihren gesamten Tests, Test Extensions und selbstgebauten Testinfrastrukturen nicht aktualisieren. Stattdessen bietet JUnit  einen sanften Weg für die Migration mit der JUnit Vintage TestEngine. Die TestEngine erlaubt es, bestehende Tests auf Basis von JUnit 3 und JUnit 4 mit der JUnit-Platform-Infrastruktur auszuführen. Da alle Klassen und Annotationen, die für JUnit Jupiter spezifisch sind, in einem neuen org.junit.jupiter-Basispaket liegen, führt es nicht zu Konflikten sowohl JUnit 4 als auch JUnit Jupiter im Klassenpfad zu haben. Es ist daher unbedenklich, bestehende JUnit-4-Tests neben den JUnit-Jupiter-Tests zu nutzen. Da das JUnit-Team weiterhin Wartungs-Releases und Bug Fixes für JUnit-4.x bereitstellen wird, haben Entwickler genügend Zeit, um auf JUnit Jupiter zu migrieren. Entwickler müssen nur sichergehen, dass das JUnit-Vintage-Engine-Artefakt in ihrem Runtime Path liegt. In diesem Fall werden JUnit-3- und JUnit-4-Tests automatisch vom JUnit Platform Launcher abgeholt. Beispielprojekte liegen im junit5-samples Repository. Der Code liegt auf GitHub bereit.

Verwandte Themen:

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.