使用RestAssured结合TestNG进行API测试时遭遇“No tests found. Nothing was run”错误求助
排查TestNG "No tests found. Nothing was run" 问题
针对你遇到的这个问题,我从你提供的配置文件和描述里梳理了几个关键排查点,你可以逐一检查:
1. 修正testng.xml的配置错误
你的testng.xml里有两处明显问题:
- test标签的name属性无效:
name="C:/Users/EXT02D49935/IdeaProjects/LifeboxAutomation"这个路径是错误的用法,name属性应该是测试集的自定义名称,比如改成name="API Authentication Tests"。 - 类的全限定名不完整:TestNG需要完整的「包名+类名」才能定位到测试类,比如如果
PreReq.payload类在com.lifebox.test包下,应该写成com.lifebox.test.PreReq.payload;同理Album类也要补充完整包路径,比如com.lifebox.test.Album。 - 测试方法必须带@Test注解:
userAuth方法必须添加org.testng.annotations.Test注解,TestNG只会识别带该注解的方法作为测试用例,无注解的方法会被直接忽略。
修正后的testng.xml示例:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="All Test Suite"> <test verbose="2" name="API Authentication Tests"> <classes> <!-- 替换为你的实际全限定类名 --> <class name="com.lifebox.test.PreReq.payload"> <methods> <include name="userAuth"/> </methods> </class> <!-- 替换为Album类的实际全限定名 --> <class name="com.lifebox.test.Album"/> </classes> </test> </suite>
2. 检查测试类的基础规范
- 确保你的测试类(
payload、Album)和测试方法(比如userAuth)都是public修饰的,TestNG无法识别非public的测试类/方法。 - 确认
@Test注解导入的是org.testng.annotations.Test,而不是JUnit的org.junit.Test——这是新手常混淆的点。
3. 优化pom.xml配置
- 升级TestNG版本:你当前使用的6.14.3是较旧的版本,建议升级到最新稳定版(比如7.10.2),新版本修复了很多兼容性问题,修改依赖如下:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.10.2</version> <scope>test</scope> </dependency>
- 添加maven-surefire-plugin:如果用Maven运行测试,需要这个插件来识别并执行TestNG测试,在pom.xml的
build节点下补充:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins> </build>
4. 确认测试类的存放位置
默认情况下,Maven会把src/test/java目录下的类当作测试类,确保你的payload和Album类放在这个目录下,而非src/main/java,否则Maven和TestNG可能无法识别它们。
如果做完以上调整仍有问题,建议补充主类的TestNG配置代码以及测试类的完整代码,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者Mert çevik
相关产品推荐
相关产品推荐

