命令行执行TestNG测试失败:无法找到指定测试类求助
排查测试类找不到的问题
1. 修正Maven目录结构(核心问题)
Maven遵循约定大于配置,测试类必须放在src/test/java目录下,否则Maven不会将其识别为测试代码,也不会编译到测试classpath中。你的当前路径不符合规范,需要调整:
- 当前路径:
folderRoot > restassured > src > Schoology - 正确路径:
folderRoot > restassured > src/test/java > restassured > src > Schoology.java
(目录结构要和类的包声明完全对应,比如类里写package restassured.src;,就需要对应上述目录)
2. 修正testng.xml的类全限定名
testng.xml里的<class name="src.Schoology"/>是错误的,必须填写测试类的全限定类名(包名+类名)。假设你的测试类Schoology.java包声明为package restassured.src;,修改后:
<suite name="Suite"> <test name="Test1"> <classes> <class name="restassured.src.Schoology"/> </classes> </test> </suite>
3. 调整Surefire插件扫描规则(或重命名测试类)
你当前的Surefire插件配置只扫描*Test.java和*Tests.java结尾的类:
<includes> <include>**/*Test.java</include> <include>**/*Tests.java</include> </includes>
而你的测试类叫Schoology.java,不符合这个规则,所以不会被扫描到。两种解决方式:
- 推荐:重命名测试类为
SchoologyTest.java,符合Maven测试类命名惯例 - 或者修改includes配置,添加你的类规则:
<includes> <include>**/*Test.java</include> <include>**/*Tests.java</include> <include>**/Schoology.java</include> </includes>
4. 修正执行命令的类名
执行命令mvn test -Dtest="restassured.src.Schoology"中的类名必须是编译后的全限定类名,确保:
- 类的
package声明和命令里的包名完全一致 - 先执行
mvn compile test-compile编译测试代码,确认target/test-classes目录下存在restassured/src/Schoology.class文件
额外验证点
- 检查测试类是否添加了TestNG的
@Test注解,没有注解的类不会被识别为测试类 - 直接执行
mvn test不带-Dtest参数,让Surefire按照testng.xml配置执行,观察是否能找到测试类
内容的提问来源于stack exchange,提问作者Alexb1999
相关产品推荐
相关产品推荐

