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

Quarkus项目中Jacoco无法合并@QuarkusTest与@QuarkusIntegrationTest覆盖率的问题求助

Quarkus项目中Jacoco无法合并@QuarkusTest与@QuarkusIntegrationTest覆盖率的问题求助

我最近在Quarkus项目里配置Jacoco,想把@QuarkusTest和@QuarkusIntegrationTest的覆盖率合并到一份报告里,但遇到了棘手的问题——@QuarkusTest的覆盖率总是被忽略,最终报告里只有集成测试的覆盖率数据。

以下是我的配置和操作过程:

首先,我添加了quarkus-jacoco依赖:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-jacoco</artifactId>
    <scope>test</scope>
</dependency>

接着配置了jacoco-maven-plugin,特意设置<append>true</append>,希望两次测试的覆盖率数据能追加到同一个exec文件中:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.10</version>
    <executions>
        <execution>
            <id>default-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <exclClassLoaders>*QuarkusClassLoader</exclClassLoaders>
                <destFile>${project.build.directory}/jacoco-quarkus.exec</destFile>
                <append>true</append>
            </configuration>
        </execution>
        <execution>
            <id>default-prepare-agent-integration</id>
            <goals>
                <goal>prepare-agent-integration</goal>
            </goals>
            <configuration>
                <destFile>${project.build.directory}/jacoco-quarkus.exec</destFile>
                <append>true</append>
            </configuration>
        </execution>
        <execution>
            <id>report</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <dataFile>${project.build.directory}/jacoco-quarkus.exec</dataFile>
                <outputDirectory>${project.build.directory}/jacoco-report</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

之后执行了构建命令:

./mvnw clean verify -Dquarkus.package.write-transformed-bytecode-to-build-output=true

所有测试都顺利运行并通过,但生成的报告里只显示@QuarkusIntegrationTest的覆盖率,那些明显被@QuarkusTest覆盖的代码都标记为未覆盖状态。

我还做了额外测试:如果移除插件里的report执行部分,报告会在更早阶段生成,此时能正确显示@QuarkusTest的覆盖率,但@QuarkusIntegrationTest的覆盖率就缺失了。这说明两种测试的覆盖率数据其实都生成了,但就是无法合并,感觉<append>true</append>的配置根本没生效。

后来我尝试给两种测试分别生成独立的exec文件,再用Jacoco的merge目标合并它们,但结果还是一样——最终报告里依然只有集成测试的覆盖率。

有没有大佬能帮我看看哪里配置出错了?

备注:内容来源于stack exchange,提问作者elgaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:18:03