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

如何配置maven-surefire-plugin在无测试Maven模块生成JaCoCo报告

解决无测试用例Maven模块的JaCoCo覆盖率报告生成问题

你可以通过在父POM中配置maven-surefire-plugin和jacoco-maven-plugin,强制无测试用例的模块生成JaCoCo所需的执行数据和报告,无需添加空测试类。

核心配置方案

1. 配置maven-surefire-plugin

设置failIfNoTests为false,确保模块无测试用例时,插件仍执行test阶段,不会跳过JaCoCo的数据生成流程:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>${surefire.version}</version>
      <configuration>
        <failIfNoTests>false</failIfNoTests>
      </configuration>
    </plugin>
  </plugins>
</build>

2. 配置jacoco-maven-plugin

绑定prepare-agent和report目标到test阶段,确保生成执行数据文件(即使是空文件)和覆盖率报告:

<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>${jacoco.version}</version>
      <executions>
        <execution>
          <id>jacoco-prepare-agent</id>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
        </execution>
        <execution>
          <id>jacoco-report</id>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

3. 聚合报告配置(可选)

如果需要生成包含所有模块的聚合报告,在父模块或test-module中添加report-aggregate目标配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>${jacoco.version}</version>
      <executions>
        <execution>
          <id>jacoco-aggregate-report</id>
          <phase>verify</phase>
          <goals>
            <goal>report-aggregate</goal>
          </goals>
          <configuration>
            <includes>
              <include>your.group.id:code-module</include>
              <include>your.group.id:test-module</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

原理说明

  • failIfNoTests=false让surefire在无测试用例时不终止test阶段执行,确保JaCoCo的agent参数被注入JVM,生成空的jacoco.exec文件。
  • jacoco-maven-plugin检测到jacoco.exec文件后,会基于模块的业务代码生成覆盖率报告(无测试时覆盖率为0%),该报告会被聚合报告正常纳入。

注意事项

  • 确保父POM的配置被子模块继承(子模块未覆盖相关插件配置时默认继承)。
  • 替换配置中的${surefire.version}和${jacoco.version}为你项目使用的实际版本号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:20:30