如何在 Android Studio 2.3 中配置代码覆盖率报告?
How can I configure the Code Coverage reports in Android Studio 2.3?
我已经 运行 我的 Android 项目的代码覆盖率报告在命令行使用 Gradle,使用以下命令:
./gradlew createDebugCoverageReport
这行得通,并生成了一份报告,其中几乎包含我整个项目中的每个包,包括第三方库。我想配置覆盖率报告以仅提供有关我的代码的信息。如何设置代码路径,包括和排除由 Android Studio 工具链生成的内置覆盖率报告中的 Jacoco 报告?
我的构建脚本中没有包含任何 Jacoco 插件,我只是在我的调试 buildType 中添加了 testCoverageEnabled true
。
谢谢!
您想执行以下操作:
- 运行 单元测试:
gradlew testDebug
- 运行 android 测试:
gradlew connectedDebugAndroidTest
- 为 Android 测试创建代码覆盖率:
gradlew createDebugCoverageReport
- 完成这些步骤后,您终于可以使用单个任务组合它们
应用testCoverageEnabled
:
android {
buildTypes {
debug {
testCoverageEnabled true
}
}
}
应用includeNoLocationClasses
:
android {
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
}
现在您可以创建这样的任务:
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"
])
}
和运行它:
gradle clean jacocoTestReport
我已经 运行 我的 Android 项目的代码覆盖率报告在命令行使用 Gradle,使用以下命令:
./gradlew createDebugCoverageReport
这行得通,并生成了一份报告,其中几乎包含我整个项目中的每个包,包括第三方库。我想配置覆盖率报告以仅提供有关我的代码的信息。如何设置代码路径,包括和排除由 Android Studio 工具链生成的内置覆盖率报告中的 Jacoco 报告?
我的构建脚本中没有包含任何 Jacoco 插件,我只是在我的调试 buildType 中添加了 testCoverageEnabled true
。
谢谢!
您想执行以下操作:
- 运行 单元测试:
gradlew testDebug
- 运行 android 测试:
gradlew connectedDebugAndroidTest
- 为 Android 测试创建代码覆盖率:
gradlew createDebugCoverageReport
- 完成这些步骤后,您终于可以使用单个任务组合它们
应用testCoverageEnabled
:
android {
buildTypes {
debug {
testCoverageEnabled true
}
}
}
应用includeNoLocationClasses
:
android {
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
}
现在您可以创建这样的任务:
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"
])
}
和运行它:
gradle clean jacocoTestReport