用法
要使用 JaCoCo 报告聚合插件,请在构建脚本中包含以下内容
plugins { id 'jacoco-report-aggregation' }
plugins { id("jacoco-report-aggregation") }
请注意,此插件除非与 JVM Test Suite Plugin 结合使用,否则不会执行任何操作。Java 插件会自动应用 JVM Test Suite Plugin。
现在有两种方式可以收集跨多个子项目的代码覆盖率结果
-
从 distribution 项目,例如应用程序或 WAR 子项目 → distribution 示例
-
使用独立的顶层项目指定子项目 → standalone 示例
示例 2 也可以用于通过根项目聚合结果。
JaCoCo 报告聚合插件目前不与 com.android.application 插件一起工作。 |
任务
当项目也应用 jvm-test-suite
插件时,为每个测试套件添加以下任务
testSuiteCodeCoverageReport
— JacocoReport-
依赖于:与以下属性匹配的 variant 的工件
通过
jacocoAggregation
配置收集直接和传递性项目依赖项的 variant。将匹配以下 Attributes
- org.gradle.category = verification (1)
- org.gradle.testsuite.name = test (2)
- org.gradle.verificationtype = jacoco-results (3)
1 | Category 属性;值是固定的。 |
2 | TestSuiteName 属性;值派生自 TestSuite#getName()。 |
3 | VerificationType 属性;值是固定的。 |
有关使用 JaCoCo 执行测试生成的 variant 的更多信息,请参阅 JaCoCo 插件文档的Outgoing Variants 部分。
报告
默认情况下,Gradle 在任何任务失败时(包括测试失败)都会停止执行任务。为确保构建始终生成聚合报告,请在 Gradle 命令中指定 |
自动创建报告
当项目也应用 jvm-test-suite
插件时,为每个测试套件添加以下报告对象
testSuiteCodeCoverageReport
— JacocoCoverageReport-
创建一个聚合的 Jacoco 报告,该报告聚合了所有项目依赖项中具有给定名称的所有测试套件。
手动创建报告
当项目不应用 jvm-test-suite
插件时,您必须手动注册一个或多个报告
reporting {
reports {
val testCodeCoverageReport by creating(JacocoCoverageReport::class) { (1)
testSuiteName = "test"
}
}
}
reporting {
reports {
testCodeCoverageReport(JacocoCoverageReport) { (1)
testSuiteName = "test"
}
}
}
1 | 创建一个名为 testCodeCoverageReport ,类型为 JacocoCoverageReport 的报告,聚合了所有项目依赖项中具有给定 TestSuite#getName() 的所有测试套件。 |
报告创建会自动创建支持任务,以聚合给定测试套件类型值的覆盖率结果。
依赖管理
JaCoCo 报告聚合插件添加了以下依赖配置
名称 | 含义 |
---|---|
|
用于声明所有包含待聚合代码覆盖率数据的项目依赖项的配置。 |
|
使用variant-aware matching 消费 |
如果项目也应用了 jvm-test-suite
插件,则无需显式将依赖项添加到 jacocoAggregation
配置中。