You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

命令行执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:15:35