Wollte mal mein REST Testprogramm auf JUnit 5 umstellen. Die neuen JUnit 5 Feature sind schon sehr interessant. Vor ein paar Tagen ist der neue M6 veröffentlicht worden (JUnit 5.0.0-M6 = Platform 1.0.0-M6 + Jupiter 5.0.0-M6 + Vintage 4.12.0-M6). Auch ist die Architektur nun grundlegend geändert. Und evl. will man schon mal die Neuen Features testen. Es gilt nicht: „Wer testet ist Feige ;-)“
Was ist da so nötig?
JUnit 5 braucht zur Laufzeit Java 8.
Versionen setzen
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<restlet-version>2.3.10</restlet-version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<junit.jupiter.version>5.0.0-M6</junit.jupiter.version>
<junit.vintage.version>${junit.version}.0-M6</junit.vintage.version>
<junit.platform.version>1.0.0-M6</junit.platform.version>
</properties>
Die neuen Abhängigkeiten hinzu:
<!-- Testframework JUnit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- Only required to run tests in an IDE that bundles an older version -->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit.vintage.version}</version>
</dependency>
Neue static Imports ersetzen:
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.BeforeClass; import org.junit.Test;
durch
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test;
Und die alte Annotation
@BeforeClass
durch
@BeforeAll
Für die Eclipse Oxygen IDE gibt es beta Support. Das ist etwas aufwändiger. Deshalb nehmen wir den alte Runner. Pom ergänzen:
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
und in der Klasse die Annotation: @RunWith(JUnitPlatform.class) hinzufügen. Dann laufen die Tests wie gewohnt
Dann auch mal gleich an der Testklasse und Testmethode eine @DisplayName(„Versions Test“) Beschreibung angefügt.
Es wir noch ein JUnit Vintage Eintrag mehr angezeigt. Das tut aber ja nicht weh.
So, weitere Infos auf der JUnit 5 Seite.
Ähnliche Artikel:
- JUnit 4.12 erschienen
- Wie können Artifacte nach Maven Central (Nexus) mit einem Mac hochgeladen werden?
- Gurken-Test mit Cucumber