20

JUnit4 有@FixMethodOrder注释,允许使用测试方法执行的字母顺序。是否有类似的 JUnit5 机制?

4

3 回答 3

22

编辑:JUnit 5.4 现已正式发布,因此不再需要使用快照。

现在可以使用 JUnit 5.4。

https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-execution-order

要控制测试方法的执行顺序,请使用 @TestMethodOrder 注释您的测试类或测试接口,并指定所需的 MethodOrderer 实现。您可以实现自己的自定义 MethodOrderer 或使用以下内置 MethodOrderer 实现之一。

字母数字:根据名称和形式参数列表按字母数字对测试方法进行排序。

OrderAnnotation:根据通过@Order 注释指定的值对测试方法进行数字排序。

于 2018-11-15T10:18:15.127 回答
13

还没有。对于单元测试,执行顺序应该是无关紧要的。对于更复杂的测试,JUnit 旨在提供明确的支持——测试排序将是其中的一部分。

于 2016-11-17T22:30:02.167 回答
0

从5.8.0版本开始,也可以订购测试类。

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文件),请参阅此处

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

package foo;
public class MyOrderer implements ClassOrderer {
    @Override
    public void orderClasses(ClassOrdererContext context) {
        Collections.shuffle(context.getClassDescriptors());
    }
}
junit.jupiter.testclass.order.default=foo.MyOrderer

请注意,@Nested测试类不能由ClassOrderer 排序

请参阅 JUnit 5文档ClassOrderer api 文档以了解有关排序测试类的更多信息。

于 2021-02-12T09:10:45.383 回答