Eclipse中Maven多模块项目执行mvn test无测试运行的问题
Maven多模块项目
mvn test无测试运行的排查方案 兄弟,我之前踩过一模一样的坑!不管在父项目还是子项目跑mvn test都显示Tests run: 0,大概率是Maven Surefire插件的扫描规则或者项目配置出了问题,咱们一步步来排查:
1. 先检查测试类的命名规则
Maven的Surefire插件默认只认特定命名的测试类:
- 以
Test开头:比如TestUserService.java - 以
Test结尾:比如UserServiceTest.java
如果你的测试类是UserServiceTestCase.java、UserTestDemo.java这类不符合规则的命名,插件会直接跳过扫描!
解决办法:
- 要么直接重命名测试类,贴合Maven默认规则(推荐,符合规范)
- 要么在子项目/父项目的POM里配置Surefire插件,自定义扫描规则:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <!-- 用最新稳定版 --> <configuration> <includes> <include>**/*TestCase.java</include> <!-- 加上你的测试类命名规则 --> <include>**/*Test.java</include> <!-- 保留默认规则 --> </includes> </configuration> </plugin> </plugins> </build>
2. 确认测试类的存放路径
Maven默认要求测试类放在src/test/java目录下,要是你把测试类误放到src/main/java里,Surefire插件根本不会去扫描这个目录!
解决办法:
把测试类移到src/test/java对应的包路径下,比如原来的src/main/java/com/example/MyTest.java,要改成src/test/java/com/example/MyTest.java。
3. 检查POM里的跳过测试配置
不小心在父项目或者子项目里加了跳过测试的配置,也会导致测试不运行:
- 父POM里的全局配置:
<properties> <maven.test.skip>true</maven.test.skip> <!-- 这个会让所有子项目都跳过测试 --> </properties>
- 或者插件里直接设置跳过:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
解决办法:
把这些配置改成false,或者直接删掉。如果是子项目要覆盖父项目的配置,就在子项目POM里重新声明:
<properties> <maven.test.skip>false</maven.test.skip> </properties>
4. 清除缓存再重试
有时候Eclipse的编译缓存或者Maven的本地仓库缓存会搞事情,试试先执行:
mvn clean test
先clean掉之前的编译产物,再重新运行测试。另外在Eclipse里右键项目→Maven→Update Project,让项目和Maven配置同步。
5. 检查测试方法的注解
最后再确认下,你的测试方法上有没有加正确的@Test注解?
- JUnit4用的是
org.junit.Test - JUnit5用的是
org.junit.jupiter.api.Test
要是没加这个注解,Surefire会把它当成普通方法,不会执行测试!
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

