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
相关产品推荐
相关产品推荐

