Maven执行指定测试方法提示No tests were executed,但IDE中正常且同类其他测试可执行的问题排查
Maven执行指定测试方法提示No tests were executed,但IDE中正常且同类其他测试可执行的问题排查
这种情况真的挺闹心的——明明在IDE里跑两个测试都好好的,到Maven单独指定其中一个就报找不到测试,另一个几乎一样的却能正常运行。咱们先从最容易忽略的细节开始排查:
首先看最可能的原因:方法名大小写不匹配
仔细对比你的命令和测试方法名:
- 你执行的第一个测试命令是:
mvn -Dtest=Lab5bTests#testAllSubclassesSetPackaging test - 而对应的测试方法名是:
testAllSubClassesSetPackaging
注意到了吗?命令里的Subclasses是小写的s,但方法名里是SubClasses(第二个C是大写的)!Maven的Surefire插件对方法名是大小写敏感的,而IDE通常会做模糊匹配或者不区分大小写,所以IDE能找到,但Maven找不到。
把命令改成和方法名完全一致的大小写就能解决:
mvn -Dtest=Lab5bTests#testAllSubClassesSetPackaging test
如果还是不行,试试这些排查步骤
清理Maven缓存,重新编译
有时候旧的编译文件会导致问题,先执行清理命令再重新测试:mvn clean mvn -Dtest=Lab5bTests#testAllSubClassesSetPackaging test检查Surefire插件版本
你用的是maven-surefire-plugin:3.0.0-M3,这是一个里程碑版本,可能存在一些兼容性问题。建议升级到稳定版本,比如3.2.5,在pom.xml中添加配置:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> </plugin> </plugins> </build>验证JUnit版本兼容性
确保你的测试用的@Test注解和Surefire插件版本匹配:- 如果用JUnit 5(
org.junit.jupiter.api.Test),需要Surefire插件版本2.22.0及以上 - 如果用JUnit 4(
org.junit.Test),大部分Surefire版本都支持,但尽量用稳定版
- 如果用JUnit 5(
检查测试类目录是否符合Maven约定
确认你的测试类在src/test/java目录下,如果放在其他目录,需要在pom.xml中配置测试源目录:<build> <testSourceDirectory>src/test/java</testSourceDirectory> </build>
补充验证方式
可以用通配符来匹配测试方法,看看能不能找到目标测试,验证是不是拼写问题:
mvn -Dtest=Lab5bTests#testAllSubClasses* test
如果这个命令能执行到testAllSubClassesSetPackaging,那基本可以确定是之前的命令拼写(大小写)错误。
备注:内容来源于stack exchange,提问作者Daltin
相关产品推荐
相关产品推荐

