Beliebte Suchanfragen
//

Alt trifft neu: JUnit 4 & 5 in einem Projekt

3.9.2018 | 2 Minuten Lesezeit

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.

Beitrag teilen

//

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.