工具版本
毕业 5.6.4
爪哇 1.8
jacoco 工具版本 0.8.2
项目结构
├── build.gradle
├── app
│ ├── build.gradle (1)
│ └── src
├── submodule_1
│ ├── build.gradle (2)
│ └── src
├── submodule_2
│ ├── build.gradle (3)
│ └── src
├── gradle
│ ├── jacoco.gradle
│ └── other_scripts.gradle
描述
(1) 进口jacoco.gradle
。
(1)、(2) 和 (3) 具有以下配置:
buildTypes {
debug {
testCoverageEnabled true
}
}
问题
我想得到一个全面的覆盖,我可以简单地在属性中包含子模块的文件classDirectories
,sourceDirectories
或者我将它们包含在 shell 中additionalClassDirs
吗?我真的不明白他们的区别。
这里是gradle/jacoco.gradle
由app/build.gradle
.
apply plugin: 'jacoco'
def coverageSourceDirs = [
"${rootDir.absolutePath}/app/src",
"${rootDir.absolutePath}/submodule_1/src",
"${rootDir.absolutePath}/submodule_2/src",
]
def coverageClassDirs = [
fileTree(dir: "${rootDir.absolutePath}/app/build/intermediates/javac/SNMAPP__10009Debug/compileSNMAPP__10009DebugJavaWithJavac/classes", excludes: androidExclusion),
fileTree(dir: "${rootDir.absolutePath}/submodule_1/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes", excludes: androidExclusion),
fileTree(dir: "${rootDir.absolutePath}/submodule_2/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes", excludes: androidExclusion),
]
task jacocoTestReport_test(type: JacocoReport) {
group = "Reporting"
description = "Generate Jacoco coverage reports runing tests."
reports {
xml.enabled = true
html.enabled = true
html.destination file("${rootDir.absolutePath}/app/build/reports/jacoco")
}
sourceDirectories = files(coverageSourceDirs)
classDirectories = files(coverageClassDirs)
executionData = files("${rootDir.absolutePath}/app/build/outputs/code_coverage/SNMAPP__10009DebugAndroidTest/connected/coverage.exec")
}