JUnit 5并行测试未运行,junit-platform.properties提示“未使用属性”排查
1. 配置属性名称错误
JUnit 5的并行执行有严格的属性命名规范,若属性名不符合官方定义,IDE会提示“Unused property”,同时并行逻辑不生效。
正确的核心并行配置属性如下:
# 启用并行执行 junit.jupiter.execution.parallel.enabled=true # 方法级默认并行模式 junit.jupiter.execution.parallel.mode.default=concurrent # 类级默认并行模式(可选,根据测试结构调整) junit.jupiter.execution.parallel.mode.classes.default=concurrent
检查你的junit-platform.properties,如果属性名是类似junit.parallel.enabled这类非官方命名,直接替换为上述标准属性。
2. 配置文件放置位置错误
junit-platform.properties必须放在**src/test/resources**目录下,JUnit测试引擎只会从这个路径加载配置文件。
从你的文件结构截图检查:如果文件放在src/main/resources或其他非测试资源目录,测试时根本不会读取该配置,导致属性未被识别、并行不生效。调整文件位置到src/test/resources即可。
3. JUnit依赖版本过低或不兼容
JUnit 5的并行执行特性从5.3版本才正式支持,如果你的POM中junit-jupiter-api、junit-jupiter-engine版本低于5.3,配置属性会被视为无效。
检查POM里的JUnit依赖版本,确保统一升级到5.3及以上(推荐使用最新稳定版),同时保证junit-jupiter-api和junit-jupiter-engine版本一致。
4. Maven Surefire插件配置问题
使用Maven运行测试时,Surefire插件需要正确配置以适配JUnit 5的并行逻辑,否则即使JUnit本身配置了并行,插件层面也会限制执行方式。
关键配置点:
- 确保
maven-surefire-plugin版本足够新(推荐3.0.0-M5及以上),旧版本对JUnit 5并行支持不佳。 - 若需要插件层面配合并行,可在插件中添加如下配置(可选,根据需求调整):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <configuration> <!-- 启用JUnit 5平台支持 --> <useModulePath>true</useModulePath> <!-- 插件层面控制并行(和JUnit自身并行配置不冲突) --> <parallel>methods</parallel> <threadCount>4</threadCount> </configuration> </plugin>
注意:如果只依赖JUnit自身的并行配置,插件只需确保正确支持JUnit 5即可,无需额外添加并行参数。
5. 测试类/方法未标记并行兼容
即使全局启用了并行,若测试类或方法存在状态共享(比如静态变量、共享资源未做线程安全处理),JUnit可能会自动串行执行这些测试,导致看起来并行未生效。
检查你的测试代码:
- 避免测试类之间共享可变状态
- 若必须使用共享资源,使用
@ResourceLock注解标记资源,让JUnit合理调度并行执行
内容的提问来源于stack exchange,提问作者Otto Rahn

