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:
1 2 3 4 5 6 |
<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:
1 2 3 4 5 6 7 8 9 10 11 12 |
@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.