Wie können die Testmethoden einer Klasse automatisch in zufälliger Reihenfolge ausgeführt werden? Ab JUnit 5.4 geht das mit der Annotation @TestMethodOrder. Es wird nur die @TestMethodOrder(MethodOrderer.Random.class) Annotation an der jeweiligen Test-Klasse benötigt. Die Zufallsfunktion wird mit Hilfe der System.nanoTime() Funktion erzeugt. Also ein Pseudozufall. Aber für Test reicht es.
Wir verwenden diese Testklasse:
import org.junit.jupiter.api.MethodOrderer.Random; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; /** * Test der Order Annotationen. * * @author Thomas Wenzlaff * */ @TestMethodOrder(Random.class) class OrderTest { @Test void aMethode() { System.out.println("a Methode im Code"); } @Test void cMethode() { System.out.println("c Methode im Code"); } @Test @Order(30) void bMethote() { System.out.println("b Methode im Code "); } }
Und nun führen wir diese Klasse zweimal aus:
Die Methoden wurden in der Reihenfolge bca ausgeführt und beim zweiten mal
in der Reihenfolge cba.
Ähnliche Artikel:
- JUnit Quickie: Wie können die Testmethoden einer Klasse automatisch in alphabetischer Reihenfolge ausgeführt werden?
- JUnit Tests nun mit Methoden Reihenfolge via @Order Annotation möglich
- Rest Test Programm: Java Migration von JUnit 4 nach JUnit 5 (1.0.0.-M6)