JUnit5测试无法被Maven及IntelliJ识别执行,该如何解决?
问题根因
- 依赖版本不兼容:JUnit Jupiter 5.8.0版本新增了
org.junit.jupiter.api.ClassOrderer类,而maven-surefire-plugin 2.22.2内置的JUnit平台启动器版本仅适配JUnit 5.3.x及更低版本,无法加载高版本JUnit的新增类,导致测试引擎初始化失败,这是IDEA报错的直接原因。 - 插件配置缺失:2.22.x版本的maven-surefire-plugin要支持JUnit5,需要显式引入对应版本的
junit-platform-surefire-provider依赖,你当前插件的依赖配置为空,默认使用内置的旧版本provider,无法适配高版本JUnit5。 - 测试类命名不符合默认规则:maven-surefire-plugin默认只扫描名称符合
*Test、*Tests、*TestCase、Test*前缀的类作为测试类,你的测试类名为MyTestClass,不符合默认匹配规则,会导致Maven扫描不到测试用例,触发No tests were executed报错。
解决方案
第一步:修正测试类命名(必做)
将测试类名MyTestClass改为符合默认规则的名称,例如MyTest,或者在maven-surefire-plugin的configuration节点中添加自定义扫描规则:
<configuration> <includes> <include>**/*TestClass.java</include> </includes> <!-- 原有其他配置 --> </configuration>
第二步:修复版本兼容问题,二选一即可
方案一(推荐):升级maven-surefire-plugin到3.x版本
3.x版本的maven-surefire-plugin对JUnit5的支持更完善,不需要额外配置provider即可适配高版本JUnit5,修改插件配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.2</version> <configuration> <trimStackTrace>false</trimStackTrace> <printSummary>true</printSummary> <excludes> <exclude>integration/*.java</exclude> </excludes> <!-- 如有自定义include规则也放在这里 --> </configuration> </plugin>
方案二:保留2.22.2版本,补全插件依赖
如果不方便升级插件版本,在maven-surefire-plugin的dependencies节点中加入对应版本的JUnit平台provider:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>1.8.0</version> </dependency> </dependencies> <configuration> <trimStackTrace>false</trimStackTrace> <printSummary>true</printSummary> <excludes> <exclude>integration/*.java</exclude> </excludes> <!-- 如有自定义include规则也放在这里 --> </configuration> </plugin>
第三步:重置依赖生效
修改完成后执行以下操作确保配置生效:
- 执行
mvn clean test -U强制更新依赖并运行测试,单个测试用例的正确执行命令为mvn test -Dtest=MyTest#test(你之前的命令多写了一个重复的test参数,无影响但可省略) - 若IDEA仍报错,右键项目 -> Maven -> Reload Project刷新项目依赖
- 若仍有异常,清除IDEA缓存:File -> Invalidate Caches -> 勾选Clear file system cache and local history -> 重启IDEA即可
内容的提问来源于stack exchange,提问作者Johnyb
相关产品推荐
相关产品推荐

