如何让jacoco-report-aggregation生成含当前模块的Gradle覆盖率报告
多模块Gradle项目JaCoCo聚合覆盖率报告缺失当前模块数据的问题
我的项目按功能分为以下模块:
- rain - rain-common - rain-service - rain-application
rain-application依赖rain-common和rain-service,是Spring Boot项目,使用bootJar打包成Fat Jar。我按照Gradle官方教程《Aggregating code coverage with JaCoCo》配置了jacoco-report-aggregation插件,但生成的报告仅展示rain-common和rain-service的覆盖率,未包含rain-application自身的覆盖率。
rain-application的build.gradle配置如下:
apply plugin: 'groovy' apply plugin: 'jacoco-report-aggregation' dependencies { implementation project(':rain-service') implementation project(':rain-common') testImplementation 'org.spockframework:spock-spring:2.4-M1-groovy-4.0' testImplementation 'org.springframework.boot:spring-boot-starter-test' } testCodeCoverageReport{ reports { xml.enabled false html.enabled true } } check.dependsOn testCodeCoverageReport test { ignoreFailures = true finalizedBy testCodeCoverageReport // report is always generated after tests run useJUnitPlatform() testLogging { events "passed", "skipped", "failed" } }
若单独使用jacoco插件,仅能展示rain-application自身的覆盖率。我需要jacoco-report-aggregation生成的聚合报告同时包含rain-application的覆盖率数据——所有测试代码都在rain-application中,因依赖Servlet上下文,无法拆分到各个模块单独运行。
此外,针对这类打包成Fat Jar的多模块Gradle项目,如何配置才能获取全局覆盖率报告?有没有相关的最佳实践可以推荐?
内容的提问来源于stack exchange,提问作者Wei
相关产品推荐
相关产品推荐

