IntelliJ IDEA中使用TestNG运行测试时提示“No tests found in the class”求助
解决Maven+TestNG项目“No tests found in the class”及循环缓冲区错误
核心诱因
这类问题基本是Java版本/SDK不匹配、TestNG依赖冲突或IDE运行配置混乱导致的,尤其是切换Java版本后,项目编译环境和运行环境脱节,引发一系列连锁报错。
分步修复方案
1. 统一全项目Java版本配置
- 检查并修正
pom.xml中的Java版本参数,确保和IDE项目SDK完全一致:<properties> <maven.compiler.source>11</maven.compiler.source> <!-- 替换为你实际使用的版本,如8/17 --> <maven.compiler.target>11</maven.compiler.target> </properties> - IDE同步设置:打开
File > Project Structure,依次确认Project SDK、Project Language Level、Modules模块的Language Level全部与pom.xml配置对齐。
2. 清理TestNG依赖冲突
- 在
pom.xml中指定明确的TestNG版本,避免与IDE内置版本不兼容:<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.8.0</version> <!-- 选用稳定兼容的版本 --> <scope>test</scope> </dependency> - 执行Maven命令清理旧依赖并重新下载:
mvn clean install -U
3. 重置IDE测试运行配置
- 删除旧的TestNG运行配置:打开
Run > Edit Configurations,找到之前手动创建的TestNG配置,右键删除。 - 重新生成配置:右键目标测试类/方法,选择
Run 'TestClassName',让IDE自动生成适配当前环境的运行配置。 - 调整缓冲区参数:如果仍出现循环缓冲区报错,在运行配置的
VM options中移除旧的-Didea.test.cyclic.buffer.size=...参数,或设置合理值(如-Didea.test.cyclic.buffer.size=1048576)。
4. 验证测试类合法性
- 确认TestNG注解导入正确,避免和JUnit注解混淆:
import org.testng.annotations.Test; public class SampleTest { @Test // 必须是org.testng包下的@Test注解 public void testCase() { // 测试逻辑 } } - 检查测试类是否位于
src/test/java目录下,Maven默认仅识别该目录内的测试类。
5. 清除IDE缓存
- 执行
File > Invalidate Caches...,选择Invalidate and Restart,解决IDE缓存残留导致的配置混乱问题。
内容的提问来源于stack exchange,提问作者BeepBop
相关产品推荐
相关产品推荐

