You need to enable JavaScript to run this app. Maven执行mvn clean install未跑测试(IDEA正常,配surefire无效)
优惠活动
大模型
产品
解决方案
定价
更多

Maven执行mvn clean install未跑测试(IDEA正常,配surefire无效)

故障核心原因

出现Tests run: 0且无报错的核心触发点是maven-surefire-plugin 3.0.0-M5 的测试引擎适配规则变更:

  • 该版本的Surefire默认使用JUnit Platform(JUnit 5运行时)作为测试提供者,仅自动识别JUnit 5的测试类
  • 你当前使用的是JUnit 4(依赖为junit:junit,无JUnit 5相关依赖),Surefire无法自动加载能运行JUnit4测试的引擎,因此直接返回0个测试的结果
  • IntelliJ IDEA内置了独立的JUnit4运行器,不依赖Maven的测试引擎配置,因此可以正常执行测试

除此之外还有两个常见诱因:

  • 测试目录未遵循Maven默认约定(默认测试源码目录为src/test/java,如果实际测试目录直接是根目录下的test,未在POM中配置testSourceDirectory,Maven会扫描不到测试类)
  • JUnit4依赖未指定明确版本,可能拉取到与Surefire不兼容的低版本
解决步骤

1. 适配JUnit4的测试引擎

在测试作用域下添加junit-vintage-engine依赖,让JUnit Platform兼容JUnit4的测试类,配置如下:

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

2. 补充JUnit4的明确版本

移除现有JUnit4依赖的无版本配置,指定兼容的稳定版本,避免版本冲突:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

3. 修正测试目录配置(仅当测试目录非Maven默认路径时需要)

如果测试类实际存放路径不是src/test/java,需要在POM的<build>节点下添加配置,告知Maven实际的测试源码目录:

<build>
    <testSourceDirectory>${project.basedir}/test</testSourceDirectory>
</build>

4. 保留已尝试的模块路径配置

之前添加的<useModulePath>false</useModulePath>配置可以保留,避免Java 9+模块系统的类加载问题,最终的Surefire插件配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M5</version>
    <configuration>
        <useModulePath>false</useModulePath>
    </configuration>
</plugin>
验证方式

执行mvn clean test,观察Surefire的输出日志,正常会显示扫描到的测试类数量、实际运行的测试结果。

内容的提问来源于stack exchange,提问作者Nathaniel Cutajar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 21:45:04