使用 JaCoCo 从应用程序/分发(孵化中)示例聚合代码覆盖率
版本 9.0.0
您可以在支持Gradle的IDE中打开此示例。 |
此示例展示了如何使用 JaCoCo 聚合多个 Java 子项目的代码覆盖率。当应用于分发项目(例如 Android 应用程序或 WAR 子项目)时,jacoco-report-aggregation 插件提供了此功能。
此示例中的项目包含三个项目:application
、list
和 utilities
。所有三个项目都应用了 jacoco
插件,并且 application
在其实现配置中使用了 list
和 utilities
。application
子项目是此软件项目的最终分发,并应用 jacoco-report-aggregation
来执行代码覆盖率聚合。
测试报告聚合插件目前不适用于 com.android.application 插件。 |
application/build.gradle.kts
plugins {
id("myproject.java-conventions")
application
id("jacoco-report-aggregation") (1)
}
dependencies {
implementation(project(":list"))
implementation(project(":utilities"))
}
application {
mainClass = "org.gradle.sample.Main"
}
tasks.check {
dependsOn(tasks.named<JacocoReport>("testCodeCoverageReport")) (2)
}
application/build.gradle
plugins {
id 'myproject.java-conventions'
id 'application'
id 'jacoco-report-aggregation' (1)
}
dependencies {
implementation project(':list')
implementation project(':utilities')
}
application {
mainClass = 'org.gradle.sample.Main'
}
tasks.named('check') {
dependsOn tasks.named('testCodeCoverageReport', JacocoReport) (2)
}
如果存在 jvm-test-suite
插件,application
项目无需额外配置。
1 | 应用 jacoco-report-aggregation 插件 |
2 | 可选:将 JaCoCo 聚合报告生成作为“检查”生命周期阶段的一部分 |
报告聚合逻辑不会自动检查所有子项目的覆盖率数据以进行聚合。相反,分发项目的运行时类路径的直接和传递项目依赖项被选中以进行潜在聚合。
对于名为“test”的默认测试套件,无需额外配置。聚合报告及其类型为 JacocoReport
的支持任务是根据 application
项目中存在的测试套件综合生成的。具有相同 testType
属性的测试套件将被聚合。
运行测试并生成报告
$ ./gradlew testCodeCoverageReport BUILD SUCCESSFUL 25 actionable tasks: 25 executed
XML 和 HTML 报告现在可以在 application/build/reports/jacoco/testCodeCoverageReport
下找到。
有关更多信息,请参阅Java 项目中的测试章节。