Files
thpeetz-notes/Quellen/IT/The Test Report Aggregation Plugin.md
T

122 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: The Test Report Aggregation Plugin
source: https://docs.gradle.org/current/userguide/test_report_aggregation_plugin.html
tags:
- IT/Development/Gradle
---
The Test Report Aggregation plugin (plugin id: `test-report-aggregation`) provides tasks and configurations used to aggregate the results of multiple [Test](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html) task invocations (potentially spanning multiple Gradle projects) into a single HTML report.
## [](#sec:test_report_aggregation_usage)[Usage](#sec:test_report_aggregation_usage)
To use the Test Report Aggregation plugin, include the following in your build script:
plugins {
id 'test-report-aggregation'
}
plugins {
id("test-report-aggregation")
}
Note that this plugin takes no action unless applied in concert with the [JVM Test Suite Plugin](https://docs.gradle.org/current/userguide/jvm_test_suite_plugin.html#jvm_test_suite_plugin). The [Java Plugin](https://docs.gradle.org/current/userguide/java_plugin.html#java_plugin) automatically applies the JVM Test Suite Plugin.
There are now two ways to collect test results across multiple subprojects:
1. From the distributions project, such as an application or WAR subproject → [distribution sample](https://docs.gradle.org/current/samples/sample_jvm_multi_project_with_test_aggregation_distribution.html)
2. Using a standalone project to specify subprojects → [standalone sample](https://docs.gradle.org/current/samples/sample_jvm_multi_project_with_test_aggregation_standalone.html)
Example 2 could also be used to aggregate results via the root project.
| | |
| --- | --- |
| | The Test Report Aggregation plugin does not currently work with the `com.android.application` plugin. |
## [](#sec:test_report_aggregation_tasks)[Tasks](#sec:test_report_aggregation_tasks)
When the project also applies the `jvm-test-suite` plugin, the following tasks are added for each test suite:
`testSuiteAggregateTestReport` — [TestReport](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.TestReport.html)
*Depends on*: Artifacts of variants matching the below attributes
Collects variants of direct and transitive project dependencies via the `testReportAggregation` configuration. The following Attributes will be matched:
```
- org.gradle.category = verification
(1)
- org.gradle.testsuite.type = unit-test
(2)
- org.gradle.verificationtype = test-results
(3)
```
| | |
| --- | --- |
| **1** | Category attribute; value is fixed. |
| **2** | TestSuiteType attribute; value is derived from [JvmTestSuite#getTestType()](https://docs.gradle.org/current/javadoc/org/gradle/api/plugins/jvm/JvmTestSuite.html#getTestType--). |
| **3** | VerificationType attribute; value is fixed. |
More information about the variants produced by test execution are available in the [Outgoing Variants](https://docs.gradle.org/current/userguide/jvm_test_suite_plugin.html#sec:outgoing_variants) section of the JVM Test Suite Plugin documentation.
## [](#reports)[Reports](#reports)
| | |
| --- | --- |
| | By default, Gradle stops executing tasks when any task fails — including test failures. To ensure that your builds always generate aggregation reports, specify the `--continue` option in your Gradle command. For more information, see [continuing the build when a failure occurs](https://docs.gradle.org/current/userguide/command_line_interface.html#sec:continue_build_on_failure). |
### [](#automatic_report_creation)[Automatic report creation](#automatic_report_creation)
When the project also applies the `jvm-test-suite` plugin, the following reporting objects are added for each test suite:
### [](#manual_report_creation)[Manual report creation](#manual_report_creation)
When the project does not apply the `jvm-test-suite` plugin, you must manually register one or more reports:
Example 1. [Create a reporting container](#ex-create-a-reporting-container)
`Kotlin``Groovy`
build.gradle.kts
```
reporting { reports { val testAggregateTestReport by creating(AggregateTestReport::class)
{
(1) testType.set(TestSuiteType.UNIT_TEST)
}
}
}
```
| | |
| --- | --- |
| **1** | Creates a report named `testAggregateTestReport` of type `AggregateTestReport`. For convenience, sets `TestType` using a constant value from the [TestSuiteType](https://docs.gradle.org/current/javadoc/org/gradle/api/attributes/TestSuiteType.html) class. Any String value is acceptable. |
Report creation automatically creates backing tasks to aggregate by the given test suite type value.
## [](#sec:dependency_management)[Dependency management](#sec:dependency_management)
The Test Report Aggregation plugin adds the following dependency configurations:
| | |
| --- | --- |Table 1. Test Report Aggregation plugin - dependency configurations
| Name | Meaning |
| --- | --- |
| `testReportAggregation` | The configuration used to declare all project dependencies having test result data to be aggregated. |
| `aggregateTestReportResults` | Consumes the project dependencies from the `testReportAggregation` configuration using [variant-aware matching](https://docs.gradle.org/current/userguide/variant_model.html#sec:variant-aware-matching) to find the appropriate test suite type. |
It is not necessary to explicitly add dependencies to the `testReportAggregation` configuration if the project also applies the `jvm-test-suite` plugin.