JUnit Jupiter 5.8.x使用@Order配置测试类执行顺序不生效问题
JUnit 5测试类@Order配置不生效排查方案
1. 依赖缺失问题
你当前只引入了junit-jupiter-api,这只是JUnit5的接口包,缺少实际的测试执行引擎实现。需要补充junit-jupiter-engine依赖:
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.8.0</version> <scope>test</scope> </dependency>
也可以直接引入统一的聚合依赖,避免版本不一致问题:
<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.8.0</version> <scope>test</scope> <type>pom</type> </dependency>
2. 配置文件路径/生效范围问题
- 确认
junit-platform.properties文件确实放在src/test/resources根目录下,编译后会出现在target/test-classes根目录,没有被maven的resource过滤规则排除 - 如果你是在IDE中执行测试,需要触发maven的
test-compile指令确保配置文件被正确拷贝到类路径下,部分IDE默认不会自动同步资源文件变更
3. 测试类包路径规则问题
如果你的两个测试类不在同一个父包下,部分构建工具/IDE的测试扫描逻辑会分批次加载不同包的测试类,导致全局Order不生效。可以将两个测试类放在同一个包下验证,或者显式在测试套件中指定要排序的类范围:
@Suite @SelectClasses({Test_1.class, Test_2.class}) public class OrderTestSuite { }
直接执行该测试套件即可按Order排序执行。
4. 构建工具测试插件配置问题
如果你使用maven-surefire-plugin执行测试,需要确认插件版本在2.22.0以上,低版本的surefire插件不支持JUnit5的类排序能力。建议升级插件到3.0+版本:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.1.2</version> </plugin> </plugins> </build>
内容的提问来源于stack exchange,提问作者Santiago Purucker
相关产品推荐
相关产品推荐

