JUnit ist das am weitesten verbreitete Framework für automatisierte Tests in Java. Seit einiger Zeit steht die Version 5 in den Startlöchern. Da diese weitreichende Veränderungen mit sich bringt, gibt es in vielen Projekten Hemmungen, auf den neuen Zug aufzuspringen. Dabei ist die parallele Verwendung von JUnit 4 und JUnit 5 ganz einfach, wie ich in diesem Blog Post zeigen werde.
Überblick
Während JUnit 4 noch komplett in einem Artefakt ausgeliefert wurde, hat sich dies mit JUnit 5 geändert. Im Wesentlichen gibt es jetzt drei Gruppen von Artefakten:
- org.junit.platform – Infrastrukturkomponenten, die für die Ausführung von Tests benötigt werden.
- org.junit.jupiter – Erhält die neue JUnit 5 API.
- org.junit.vintage – Unterstützung für die Ausführung von JUnit-3- und -4-Tests.
Um JUnit 4 und 5 zusammen in einem Projekt zu verwenden, brauche ich Artefakte aus letzteren zwei Bereichen. Ich nutze org.junit.jupiter:junit-jupiter-api
, um die Klassen der neuen API nutzen zu können. org.junit.jupiter:junit-jupiter-engine
wird verwendet, um JUnit-5-Tests auszuführen. Für die alten JUnit-4-Tests muss ich zusätzlich org.junit.vintage:junit-vintage-engine
als Abhängigkeit hinzufügen. Zu guter Letzt ist es wichtig darauf zu achten, dass das Apache Maven Surefire Plugin mindestens in Version 22 verwendet wird, da erst diese Version JUnit-5-Tests unterstützt.
Maven-Konfiguration
Schauen wir uns also mal die Konfiguration an, die benötigt wird, um JUnit 4 und 5 im Parallelbetrieb zu benutzen:
Hier sind ein paar Dinge hervorzuheben. Mit den Properties maven.compiler.source
und maven.compiler.target
wird das Java-Sprachlevel explizit auf Java 8 eingestellt. Dies ist notwendig, da JUnit 5 Java 8 voraussetzt. Der Default in Maven 3.x ist jedoch Java 1.5. Wie zuvor beschrieben, sind Abhängigkeiten zur JUnit Jupiter API, zur JUnit Jupiter Engine und zur JUnit Vintage Engine hinzugefügt. Als Letztes ist im -Bereich noch das Surefire Plugin explizit auf die Version 2.22 konfiguriert, da ansonsten auch die Default-Version der Maven-Installation verwendet wird.
Ein vollständiges Beispielprojekt inklusive JUnit-4- und -5-Tests, die von mvn test
beide ausgeführt werden, habe ich auf GitHub vorbereitet.
Fazit
In diesem Blogpost habe ich gezeigt, wie man JUnit 4 zusammen mit JUnit 5 in einem Projekt einsetzen kann. Dazu ist lediglich ein wenig zusätzliche Konfiguration in der POM notwendig. Dies eröffnet die Möglichkeit einer schrittweisen Migration hin zu JUnit 5, ohne sofort die gesamte Testsuite umstellen zu müssen.
Weitere Beiträge
von Benedikt Ritter
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Benedikt Ritter
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.