Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JUnit5中为测试套件设置自定义测试执行顺序?_Java_Unit Testing_Testing_Junit_Junit5 - Fatal编程技术网

Java 如何在JUnit5中为测试套件设置自定义测试执行顺序?

Java 如何在JUnit5中为测试套件设置自定义测试执行顺序?,java,unit-testing,testing,junit,junit5,Java,Unit Testing,Testing,Junit,Junit5,我在JUnit5上有大量的测试,我在几个线程中并行运行这些测试。 还有关于每次测试时间的信息。 我希望在最长测试开始时运行,并在结束时保留最快的测试,以优化公共执行时间 在JUnit5中,我还没有找到这样做的方法 在版本5.4中有一个org.junit.jupiter.api.MethodOrder接口,允许您在测试类中编写测试分类器。并通过注释org.junit.jupiter.api.TestMethodOrder连接到测试类 对于整个测试套件,我希望有类似的东西,但在全球范围内是一样的。不

我在JUnit5上有大量的测试,我在几个线程中并行运行这些测试。 还有关于每次测试时间的信息。 我希望在最长测试开始时运行,并在结束时保留最快的测试,以优化公共执行时间

在JUnit5中,我还没有找到这样做的方法

在版本
5.4
中有一个
org.junit.jupiter.api.MethodOrder
接口,允许您在测试类中编写测试分类器。并通过注释
org.junit.jupiter.api.TestMethodOrder
连接到测试类


对于整个测试套件,我希望有类似的东西,但在全球范围内是一样的。

不幸的是,您所要求的在JUnit 5中是不可能的(即,在JUnit平台上或JUnit Jupiter中)


然而,有一个专门讨论这个问题的方法。所以请随意插话。

我以前已经回答过这个问题。现在可以在JUnit5中对测试类进行排序(因为)

src/test/resources/junit platform.properties

# ClassOrderer$OrderAnnotation sorts classes based on their @Order annotation
junit.jupiter.testclass.order.default=org.junit.jupiter.api.ClassOrderer$OrderAnnotation
其他Junit内置类排序器实现:

org.junit.jupiter.api.ClassOrderer$ClassName
org.junit.jupiter.api.ClassOrderer$DisplayName
org.junit.jupiter.api.ClassOrderer$Random
有关设置配置参数的其他方法(junit-platform.properties文件旁边),请参阅

您还可以提供自己的订购者。它必须实现ClassOrder接口:

package foo;
public class MyOrderer implements ClassOrderer {
    @Override
    public void orderClasses(ClassOrdererContext context) {
        Collections.shuffle(context.getClassDescriptors());
    }
}
请注意,
@嵌套的
测试类不能由类排序器排序。 请参阅JUnit5和ClassOrder,以了解有关测试类排序的更多信息

junit.jupiter.testclass.order.default=foo.MyOrderer