求助:Maven无法找到任何测试?附JUnit5测试类代码
Maven找不到JUnit 5测试的常见原因及解决办法
我来帮你排查下Maven为啥找不到你的测试类,结合你贴的代码,大概率是这几个问题之一:
1. 缺少JUnit 5的核心运行依赖
你用的是JUnit Jupiter(JUnit 5)的参数化测试,但如果只引入了API依赖,没加JUnit Jupiter Engine,Maven Surefire插件就找不到执行测试的引擎。
在你的pom.xml里,要确保有这两个依赖(scope都是test):
<dependencies> <!-- JUnit Jupiter API - 用于编写测试 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.9.2</version> <scope>test</scope> </dependency> <!-- JUnit Jupiter Engine - 用于运行测试 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.2</version> <scope>test</scope> </dependency> </dependencies>
2. Maven Surefire插件版本太旧
Maven默认的Surefire插件版本可能不支持JUnit 5,你需要在pom.xml的build部分指定一个支持JUnit 5的新版本(比如3.0.0及以上):
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.1.2</version> </plugin> </plugins> </build>
3. 测试代码存在编译错误
你贴的代码里AddFuncti...明显没写完,比如应该是调用AddFunction.add(first, second)这类逻辑。如果测试类本身编译失败,Maven会直接跳过测试执行,自然显示“找不到测试”。先把测试方法里的代码补全,确保mvn compile test-compile能顺利通过。
4. 测试类/方法的规范检查(虽然你的代码看起来符合,但还是确认下)
- 测试类命名要符合
*Test的格式(你的AddFunctionTest没问题) - 测试方法必须是
public的(你的方法是public void,没问题) - 方法上必须有
@Test或@ParameterizedTest这类JUnit 5的测试注解(你加了@ParameterizedTest,没问题)
解决完这些问题后,再运行mvn test,应该就能看到测试被执行了。
内容的提问来源于stack exchange,提问作者Mohit Kanwar
相关产品推荐
相关产品推荐

