测试报告聚合插件(插件 ID: test-report-aggregation)提供了用于将多个 Test 任务调用(可能跨越多个 Gradle 项目)的结果聚合到单个 HTML 报告中的任务和配置。

用法

要使用测试报告聚合插件,请在您的构建脚本中包含以下内容

plugins {
    id 'test-report-aggregation'
}
plugins {
    id("test-report-aggregation")
}

请注意,除非与 JVM Test Suite 插件 一起应用,否则此插件不会执行任何操作。Java 插件会自动应用 JVM Test Suite 插件。

现在有两种方法可以收集跨多个子项目的测试结果

  1. 从分发项目(例如应用程序或 WAR 子项目) → 分发示例

  2. 使用独立项目指定子项目 → 独立示例

示例 2 也可用于通过根项目聚合结果。

测试报告聚合插件目前不适用于 com.android.application 插件。

任务

当项目也应用了 jvm-test-suite 插件时,会为每个测试套件添加以下任务

testSuiteAggregateTestReportTestReport

依赖于:与以下属性匹配的变体的 Artifacts

通过 testReportAggregation 配置收集直接和传递的项目依赖项的变体。将匹配以下属性

    - org.gradle.category         = verification   (1)
    - org.gradle.testsuite.name   = test           (2)
    - org.gradle.verificationtype = test-results   (3)
1 Category 属性;值为固定值。
2 TestSuiteName 属性;值来源于 TestSuite#getName()
3 VerificationType 属性;值为固定值。

有关测试执行产生的变体的更多信息,请参阅 JVM Test Suite 插件文档的传出变体部分。

报告

默认情况下,当任何任务失败(包括测试失败)时,Gradle 会停止执行任务。为确保您的构建始终生成聚合报告,请在您的 Gradle 命令中指定 --continue 选项。更多信息,请参阅在发生故障时继续构建

自动报告创建

当项目也应用了 jvm-test-suite 插件时,会为每个测试套件添加以下报告对象

testSuiteAggregateTestReportAggregateTestReport

创建一个 Jacoco 聚合报告,聚合所有项目依赖项中具有给定名称的所有测试套件。

手动报告创建

当项目未应用 jvm-test-suite 插件时,您必须手动注册一个或多个报告

build.gradle.kts
reporting {
    reports {
        val testAggregateTestReport by creating(AggregateTestReport::class) { (1)
            testSuiteName = "test"
        }
    }
}
build.gradle
reporting {
    reports {
        testAggregateTestReport(AggregateTestReport) { (1)
            testSuiteName = "test"
        }
    }
}
1 创建一个名为 testAggregateTestReport、类型为 AggregateTestReport 的报告,聚合所有项目依赖项中具有给定TestSuite#getName() 的所有测试套件。

报告创建会自动创建支持任务,以便按给定的测试套件类型值进行聚合。

依赖管理

测试报告聚合插件添加了以下依赖配置

表 1. 测试报告聚合插件 - 依赖配置
名称 含义

testReportAggregation

用于声明所有包含待聚合测试结果数据的项目依赖项的配置。

aggregateTestReportResults

使用 变体感知匹配 消费来自 testReportAggregation 配置的项目依赖项,以找到合适的测试套件类型。

如果项目也应用了 jvm-test-suite 插件,则无需显式地将依赖项添加到 testReportAggregation 配置中。