您可以在支援 Gradle 的 IDE 中開啟此範例。

此範例示範如何使用 JaCoCo 彙整多個 Java 子專案的程式碼覆蓋率。jacoco-report-aggregation 外掛程式 在應用於發行版專案(例如 Android 應用程式或 WAR 子專案)時,提供此功能。

此範例中的專案包含三個專案:applicationlistutilities。這三個專案都應用了 jacoco 外掛程式,而 application 在其實作配置中使用了 listutilitiesapplication 子專案是此軟體專案的最終發行版,並應用了 jacoco-report-aggregation 來執行程式碼覆蓋率彙整。

測試報告彙整外掛程式目前不適用於 com.android.application 外掛程式。
application/build.gradle.kts
plugins {
    id("myproject.java-conventions")
    application
    id("jacoco-report-aggregation") (1)
}

dependencies {
    implementation(project(":list"))
    implementation(project(":utilities"))
}

application {
    mainClass = "org.gradle.sample.Main"
}

tasks.check {
    dependsOn(tasks.named<JacocoReport>("testCodeCoverageReport")) (2)
}
application/build.gradle
plugins {
    id 'myproject.java-conventions'
    id 'application'
    id 'jacoco-report-aggregation' (1)
}

dependencies {
    implementation project(':list')
    implementation project(':utilities')
}

application {
    mainClass = 'org.gradle.sample.Main'
}

tasks.named('check') {
    dependsOn tasks.named('testCodeCoverageReport', JacocoReport) (2)
}

如果存在 jvm-test-suite 外掛程式,則 application 專案不需要額外配置。

1 應用 jacoco-report-aggregation 外掛程式
2 選用:使 JaCoCo 彙整報告生成成為 'check' 生命周期階段的一部分

報告彙整邏輯不會自動檢查所有子專案以彙整覆蓋率資料。相反地,會選擇發行版專案執行時期類別路徑的直接和遞移專案依賴關係,以進行潛在的彙整。

對於名為 'test' 的預設測試套件,不需要額外配置。彙整的報告及其 JacocoReport 類型的後端任務是根據 application 專案中存在的測試套件合成的。具有相同 testType 屬性的測試套件將會被彙整。

執行測試並生成報告

$ ./gradlew testCodeCoverageReport

BUILD SUCCESSFUL
25 actionable tasks: 25 executed

現在可以在 application/build/reports/jacoco/testCodeCoverageReport 下找到 XML 和 HTML 報告。

如需更多資訊,請參閱Java 專案中的測試章節