如何使用Espresso测试获取Android项目的覆盖范围

时间:2015-10-28 14:32:21

标签: android code-coverage android-testing android-espresso gradle-android-test-plugi

我曾经使用Robotium编写Android测试并使用Emma检索覆盖率。

最近我改为使用Espresso测试,我在检索Instrumentation测试的覆盖范围时遇到了麻烦。我只能检索使用Robolectric的单元测试的覆盖范围。我目前正在使用gradle和Jacoco来做到这一点。我找到的帮助我达到这一点的最佳教程是:{{3}}

是否可以检索使用Android检测的Espresso测试的覆盖范围?

2 个答案:

答案 0 :(得分:21)

android gradle插件具有内置功能。<​​/ p>

只需将testCoverageEnabled参数设置为true文件中的build.gradle

android {
   buildTypes {
      debug {
         testCoverageEnabled = true
      }
   }
}

然后使用:

./gradlew connectedCheck

./gradlew createDebugCoverageReport

它将在模块目录中生成测试覆盖率报告:

/build/outputs/reports/coverage/debug/

只需打开index.html

即可

示例:

enter image description here

答案 1 :(得分:0)

带有Jacoco(Java代码覆盖率)的Android中的覆盖率报告

Android Gradle插件> = 3.x

在类路径依赖项中添加新的Jacoco版本

项目build.gradle文件

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'org.jacoco:org.jacoco.core:0.8.0'
    }
}

应用build.gradle文件

// app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'jacoco'

jacoco {
    toolVersion = '0.8.0'
}

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
}

...

创建任务,例如jacocoTestReport

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: "$project.buildDir/intermediates/classes/debug", excludes: fileFilter)
    def mainSrc = "$project.projectDir/src/main/java"

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: project.buildDir, includes: [
            'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
    ])
}

在此处了解更多信息

Android Gradle plugin <3.x
 Android Gradle plugin >=3.x