web-dev-qa-db-ja.com

Espressoテストを使用してAndroidプロジェクトのカバレッジを取得する方法

以前はRobotiumを使用してAndroidテストを記述し、Emmaを使用してカバレッジを取得していました。

最近Espressoテストを使用するように変更しましたが、インストルメンテーションテストのカバレッジを取得するのに問題があります。 Robolectricを使用する単体テストのカバレッジのみを取得できます。現在、gradleとJacocoを使用しています。この時点に到達するのに私が見つけた最高のチュートリアルは次のとおりです: https://blog.gouline.net/2015/06/23/code-coverage-on-Android-with-jacoco/

Androidインストルメンテーションを使用するEspressoテストのカバレッジを取得することは可能ですか?

17
Paulo Barros

Android gradleプラグインには組み込みの機能があります。

build.gradleファイルでtestCoverageEnabledパラメータをtrueに設定するだけです。

Android {
   buildTypes {
      debug {
         testCoverageEnabled = true
      }
   }
}

次に使用します:

./gradlew connectedCheck

または

./gradlew createDebugCoverageReport

モジュールのディレクトリにテストカバレッジレポートが作成されます。

/build/outputs/reports/coverage/debug/

index.htmlを開くだけです

例:

enter image description here

25

カバレッジレポートAndroid with Jacoco (Javaコードカバレッジ)

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プラグイン<3.x
Android Gradleプラグイン> = 3.x

0
yoAlex5