本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28220

动态测试中的执行顺序

  • 动态测试的方法顺序不依赖于在顶级测试类上声明的@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());
        });
    }
}