JUnit4 有@FixMethodOrder
注释,允许使用测试方法执行的字母顺序。是否有类似的 JUnit5 机制?
3 回答
编辑: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 注释指定的值对测试方法进行数字排序。
还没有。对于单元测试,执行顺序应该是无关紧要的。对于更复杂的测试,JUnit 旨在提供明确的支持——测试排序将是其中的一部分。
从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