In JUnit 5 gibt es nun die Möglichkeit, Testmethoden mit Parametern ausszuführen. Anstatt der @Test Annnotation verwendet man die @ParameterizedTest. Nun braucht man noch eine Datenquelle mit @ValueSource.
Diese Klassen liegen in:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
und muss in der pom.xml ergänzt werden.
Es gibt unterschiedliche Typen (int, long, double …) von ValueSource. Hier ein Beispiel mit einem String Array:
@DisplayName("Parameter Test mit unterschiedlichen URLs wenzlaff.de")
@ParameterizedTest
@ValueSource(strings = { "/umgebung/service", "/umgebung/mindmap", "/umgebung/version" })
public void parameterTesten(String hostServiceUrl) {
String hostUrl = StandaloneServer.HOST + hostServiceUrl;
ClientResource clientResource = new ClientResource(hostUrl);
Umgebung resource = clientResource.wrap(Umgebung.class);
String vers = resource.getUmgebung();
assertTrue(vers.length() > 4);
}
Es werden also drei Durchläufe ausgeführt, und man kann gut sehen, welcher Test ausgeführt wurde:
Nun kann man auch noch den Anzeige Namen im Testlauf schöner machen, in dem die ParameterizedTest Annotation ergänzt wird um
@ParameterizedTest(name = „Testfall Nr. {index} mit URL Argument [{arguments}]“)
Dann sieht das ganze nach der Ausführung so aus:
Man kann also auf die Parameter zugreifen mit: index, arguments oder auch i.
Weitere Details hier (engl.) oder auf diesem Block in Kategorie JUnit 5.
Ähnliche Artikel:
- חזרות Wiederholungen mit JUnit 5: @RepeatedTest
- Drei Gründe warum man keine JUnit-Tests schreiben sollte (Mindmap).
- Rest Test Programm: Java Migration von JUnit 4 nach JUnit 5 (1.0.0.-M6)