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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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.