使用独立实用程序项目(孵化中)聚合测试结果 示例
版本 9.0.0
您可以在支持Gradle的IDE中打开此示例。 |
此示例展示了如何跨多个 Java 子项目聚合测试结果。test-report-aggregation 插件通过一个独立项目提供了此功能,该项目用于指定要包含在聚合中的子项目。
此示例中的项目包含三个“代码”子项目:application
、list
和 utilities
。所有三个项目都应用了 java
插件,并且 application
通过其实现配置使用了 list
和 utilities
。第四个子项目 test-results
是用于收集聚合测试结果的独立实用程序项目。
测试报告聚合插件目前不适用于 com.android.application 插件。 |
test-results/build.gradle.kts
plugins {
base
id("test-report-aggregation")
}
dependencies {
testReportAggregation(project(":application")) (1)
}
reporting {
reports {
val testAggregateTestReport by creating(AggregateTestReport::class) { (2)
testSuiteName = "test"
}
}
}
tasks.check {
dependsOn(tasks.named<TestReport>("testAggregateTestReport")) (3)
}
test-results/build.gradle
plugins {
id 'base'
id 'test-report-aggregation'
}
dependencies {
testReportAggregation project(':application') (1)
}
reporting {
reports {
testAggregateTestReport(AggregateTestReport) { (2)
testSuiteName = "test"
}
}
}
tasks.named('check') {
dependsOn tasks.named('testAggregateTestReport', TestReport) (3)
}
独立项目应用了 test-report-aggregation
,但如果不存在 jvm-test-suite
插件(它将由 java
插件自动应用),则需要额外的配置。
在这种情况下,需要进行两项额外的设置
1 | 使用 testReportAggregation 配置声明依赖项 |
2 | 定义一个类型为 AggregateTestReport 的报告,该报告从单元测试套件收集测试数据 |
3 | 可选:将聚合测试报告生成作为“check”生命周期阶段的一部分 |
报告聚合逻辑不会自动检查所有子项目的测试结果以进行聚合。相反,testReportAggregation
配置的直接和传递项目依赖项被选择用于潜在的聚合。
用户还必须声明一个或多个类型为 AggregateTestReport
的报告。每个报告实例都指定一个 testType
属性,用于匹配生成测试数据的测试套件。为每个用户定义的报告合成一个 TestReport
任务并执行聚合。调用此任务将导致在 testReportAggregation
配置的依赖项目中执行测试。
运行测试并生成报告
$ ./gradlew testAggregateTestReport BUILD SUCCESSFUL 24 actionable tasks: 24 executed
聚合的 HTML 报告现在可以在 test-results/build/reports/tests/unit-tests/aggregated-results
下找到。
有关更多信息,请参阅Java 项目中的测试章节。