JaCoCo 報告彙總外掛(外掛 ID:jacoco-report-aggregation)提供將多個 JaCoCo 代码覆蓋率報告(可能跨越多個 Gradle 專案)的結果彙總到單個 HTML 報告中的能力。覆蓋率報告的二進制數據由 Test 任務調用產生;請參閱 JaCoCo 外掛 章節以了解更多資訊。

用法

若要使用 JaCoCo 報告彙總外掛,請在您的建置腳本中包含以下內容

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

請注意,除非與 JVM 測試套件外掛 協同應用,否則此外掛不會採取任何動作。Java 外掛 會自動應用 JVM 測試套件外掛。

現在有兩種方法可以跨多個子專案收集程式碼覆蓋率結果

  1. 從發行版本的專案,例如應用程式或 WAR 子專案 → 發行版本範例

  2. 使用獨立專案來指定子專案 → 獨立範例

範例 2 也可用於透過根專案彙總結果。

JaCoCo 報告彙總外掛目前不適用於 com.android.application 外掛。

任務

當專案也應用 jvm-test-suite 外掛時,會為每個測試套件新增以下任務

testSuiteCodeCoverageReportJacocoReport

依賴於:符合以下屬性的變體的工件

透過 jacocoAggregation 配置收集直接和過渡專案依賴關係的變體。將會比對以下屬性

    - 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 執行測試產生的變體的更多資訊,請參閱 JaCoCo 外掛文件中的 輸出變體 章節。

報告

預設情況下,當任何任務失敗時(包括測試失敗),Gradle 會停止執行任務。為確保您的建置始終產生彙總報告,請在您的 Gradle 命令中指定 --continue 選項。如需更多資訊,請參閱 在發生失敗時繼續建置

自動報告建立

當專案也應用 jvm-test-suite 外掛時,會為每個測試套件新增以下報告物件

testSuiteCodeCoverageReportJacocoCoverageReport

建立彙總所有具有給定 名稱 的測試套件的彙總 Jacoco 報告,跨越所有專案依賴關係。

手動報告建立

當專案未應用 jvm-test-suite 外掛時,您必須手動註冊一個或多個報告

build.gradle.kts
reporting {
    reports {
        val testCodeCoverageReport by creating(JacocoCoverageReport::class) { (1)
            testSuiteName = "test"
        }
    }
}
build.gradle
reporting {
    reports {
        testCodeCoverageReport(JacocoCoverageReport) { (1)
            testSuiteName = "test"
        }
    }
}
1 建立名為 testCodeCoverageReportJacocoCoverageReport 類型報告,彙總來自所有專案依賴關係且具有給定 TestSuite#getName() 的所有測試套件。

報告建立會自動建立後端任務,以彙總給定測試套件類型值的覆蓋率結果。

依賴管理

JaCoCo 報告彙總外掛新增以下依賴配置

表 1. JaCoCo 報告彙總外掛 - 依賴配置
名稱 含義

jacocoAggregation

用於宣告所有要彙總的具有程式碼覆蓋率數據的專案依賴關係的配置。

aggregateCodeCoverageReportResults

使用 變體感知比對jacocoAggregation 配置中使用專案依賴關係,以尋找適當的測試套件類型。

如果專案也應用了 jvm-test-suite 外掛,則無需顯式地將依賴關係添加到 jacocoAggregation 配置中。