Tho*_*ide 4 android android-studio android-gradle-plugin android-studio-2.3
我一直在我的 Android 项目上使用 Gradle 在命令行上运行我的代码覆盖率报告,使用以下命令:
./gradlew createDebugCoverageReport
Run Code Online (Sandbox Code Playgroud)
这有效,并生成了一个报告,其中包含我整个项目中的几乎每个包,包括第三方库。我想配置覆盖率报告以仅提供有关我的代码的信息。如何在 Android Studio 工具链生成的内置覆盖率报告中的 Jacoco 报告中设置代码路径、包含和排除?
我没有在我的构建脚本中包含任何 Jacoco 插件,我只是testCoverageEnabled true在我的调试 buildType 中添加了。
谢谢!
您想要执行以下操作:
gradlew testDebuggradlew connectedDebugAndroidTestgradlew createDebugCoverageReport申请testCoverageEnabled:
android {
buildTypes {
debug {
testCoverageEnabled true
}
}
}
Run Code Online (Sandbox Code Playgroud)
申请includeNoLocationClasses:
android {
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以创建一个这样的任务:
apply plugin: 'jacoco'
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: "$buildDir", includes: [
"jacoco/testDebugUnitTest.exec",
"outputs/code-coverage/connected/*coverage.ec"
])
}
Run Code Online (Sandbox Code Playgroud)
并运行它:
gradle clean jacocoTestReport
Run Code Online (Sandbox Code Playgroud)
资料来源: https : //medium.com/@rafael_toledo/setting-up-an-unified-coverage-report-in-android-with-jacoco-robolectric-and-espresso-ffe239aaf3fa
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |