配置quarkus-jacoco统计未标注@QuarkusTest的测试覆盖率遇阻
解决JaCoCo无法统计未标注@QuarkusTest的单元测试问题
针对你遇到的问题,可以从以下几个方向排查和修复:
1. 补充JaCoCo报告生成配置
你当前仅配置了prepare-agent目标来收集覆盖率数据,但缺少报告生成的执行逻辑,导致即使数据被收集也无法生成包含所有测试的覆盖率报告。需在插件配置中添加report执行节点:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>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>report</id> <goals> <goal>report</goal> </goals> <configuration> <dataFile>${project.build.directory}/jacoco-quarkus.exec</dataFile> <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory> </configuration> </execution> </executions> </plugin>
2. 确认测试执行命令
确保使用正确的Maven命令触发测试并生成报告:
mvn clean test jacoco:report
若已将report目标绑定到test阶段,直接执行mvn clean test即可自动生成报告。
3. 检查测试类的执行范围
- 确认未标注
@QuarkusTest的测试类位于src/test/java目录下,且符合Maven默认测试类命名规则(如以Test结尾)。 - 排查Maven Surefire插件配置,确保没有通过
includes/excludes规则排除目标测试类。
4. 验证类加载器排除配置
暂时注释掉exclClassLoaders配置,重新执行测试看是否能统计到覆盖率。若可以,说明原配置可能误排除了测试类使用的类加载器,需调整匹配规则。
5. 检查版本兼容性
尝试将JaCoCo插件升级到0.8.9或0.8.10版本(与Quarkus 2.10.3.Final兼容),部分版本适配问题可能导致数据收集异常。
内容的提问来源于stack exchange,提问作者Manollo Guedes
相关产品推荐
相关产品推荐

