动态测试中的执行顺序
- 动态测试的方法顺序不依赖于在顶级测试类上声明的@TestMethodOrder。
- 为了控制动态测试的顺序,我们可以使用自定义排序。
package com.junit5.dynamictest_executionorder;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class DynamicTestExecuteOrder {
@TestFactory
List<DynamicTest> dynamicTestCollection(){
// Collection<DynamicTest> dynamicTests = new ArrayList<>();
DynamicTest dynamicTest1 = DynamicTest.dynamicTest("1stDy", () -> {
System.out.println("1stDy");
});
DynamicTest dynamicTest2 = DynamicTest.dynamicTest("2stDy", () -> {
System.out.println("2stDy");
});
DynamicTest dynamicTest3 = DynamicTest.dynamicTest("3stDy", () -> {
System.out.println("3stDy");
});
// dynamicTests.add(dynamicTest1);
// dynamicTests.add(dynamicTest2);
// dynamicTests.add(dynamicTest3);
List<DynamicTest> dynamicTests= Arrays.asList(dynamicTest1,dynamicTest2,dynamicTest3);
sortDy(dynamicTests);
return dynamicTests;
}
static void sortDy(List<DynamicTest> dynamicTests){
dynamicTests.sort((DynamicTest t1,DynamicTest t2)->{
return t2.getDisplayName().compareTo(t1.getDisplayName());
});
}
}