JaCoCo 插件目前還是孵化中狀態(tài)。請務必注意,在以后的 Gradle 版本中,DSL 和其他配置可能會有所改變。
JaCoCo 插件通過集成 JaCoCo為 Java 代碼提供了代碼覆蓋率指標。
要想開始,請將 JaCoCo 插件應用于你想要計算代碼覆蓋率的項目中。
應用 JaCoCo 插件
build.gradle
apply plugin: "jacoco"
如果 Java 插件也被應用于你的項目,那么會創(chuàng)建一個名為 jacocoTestReport 的新任務,該新任務依賴于 test 任務。該報告可以在 $buildDir/reports/jacoco/test 中看到。默認情況下,會生成一個 HTML 報告。
JaCoCo 插件添加一個名為 jacoco 類型為 JacocoPluginExtension 的 project 擴展,這個擴展允許在你的構建中配置 JaCoCo 所使用的默認值。
配置 JaCoCo 插件設置
build.gradle
jacoco
toolVersion = "0.6.2.201302030002"
reportsDir = file("$buildDir/customJacocoReportDir")
}
表 34.1. JaCoCo 屬性的 Gradle 默認值
Property | Gradle 默認值 |
reportsDir | "$buildDir/reports/jacoco" |
JacocoReport 任務可以用于生成不同格式的代碼覆蓋率報告。它實現(xiàn)了標準的 Gradle 類型 Reporting,并呈現(xiàn)了一個 JacocoReportsContainer 類型的報告容器。
配置測試任務
build.gradle
jacocoTestReport {
reports
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
JaCoCo 插件添加了一個 JacocoTaskExtension 擴展到 Test 類型的所有任務中。該擴展允許配置 JaCoCo 中的測試任務的一些特定屬性。
配置測試任務
build.gradle
test {
jacoco
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
表 34.2. JaCoCo 任務擴展的默認值
Property | Gradle 默認值 |
enabled | true |
destPath | $buildDir/jacoco |
append | true |
includes | [] |
excludes | [] |
excludeClassLoaders | [] |
sessionId |
auto-generated
|
dumpOnExit |
true
|
output |
Output.FILE
|
address |
-
|
port |
-
|
classDumpPath |
-
|
jmx |
false
|
雖然 Test 的所有任務會在 java 插件被配置使用時會自動增強以提供覆蓋率信息,但是任何實現(xiàn)了 JavaForkOptions 的任務都可以通過 JaCoCo 插件得到增強。也就意味著,任何 fork Java 進程的任務都可以用于生成覆蓋率信息。
例如,你可以配置您的構建使用 application 插件來生成代碼覆蓋率。
使用 application 插件來生成代碼覆蓋率數(shù)據
build.gradle
apply plugin: "application"
apply plugin: "jacoco"
mainClassName = "org.gradle.MyMain"
jacoco {
applyTo run
}
task applicationCodeCoverageReport(type:JacocoReport){
executionData run
sourceSets sourceSets.main
}
注: 此示例中的代碼可以在 Gradle 的二進制分發(fā)包及源代碼分發(fā)包中的 samples/testing/jacoco/application 中找到。
由 applicationCodeCoverageReport 生成的覆蓋率報告
構建布局
application
build
jacoco
run.exec
reports/jacoco/applicationCodeCoverageReport/html/
index.html
對于同時也配置使用了 Java 插件的項目,JaCoCo 插件會自動添加以下任務:
表 34.3. JaCoCo 插件 - 任務
任務名稱 | 依賴于 | 類型 | 描述 |
jacocoTestReport
|
- | JacocoReport | 為測試任務生成代碼覆蓋率報告。 |
JaCoCo 插件添加了下列的依賴配置:
表 34.4. JaCoCo 插件 ??- 依賴配置
名稱 | 意義 |
jacocoAnt
|
用于運行JacocoMerge 任務的 JaCoCo Ant 庫。 |
jacocoAgent
|
用于測試位于test下的代碼的 JaCoCo 客戶端庫。 |
更多建議: