Нулевое покрытие при тестировании с эспрессо

У меня есть некоторые проблемы, чтобы получить тестовое покрытие для моего приложения для Android. Я установил jacoco и espresso (и делаю все необходимое для объединения unitTests и androidTests в отчет о покрытии, см. Мой плагин Gradle). Когда я запускаю тесты (gradlew test а также gradlew connectedAndroidTest), все они преуспевают на 100%. Но когда я хочу создать отчет о покрытии, я получаю только покрытие для модульных тестов, все мои тесты на Android (с использованием эспрессо) получают 0% покрытия. Даже с gradlew createDebugCoverageReport, отчет показывает 0% тестовое покрытие. Кто-нибудь знает как это решить? Спасибо

Я использую Android Studio 3.0.1 с Gradle 4.1

bild.gradle

apply plugin: 'jacoco'

dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.hamcrest:hamcrest-all:1.3'
    testImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

android {
    defaultConfig {
        minSdkVersion 22
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    productFlavors {
    }

    buildTypes{
        debug{
            testCoverageEnabled true
        }
    }
}

task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { //we use "debug" build type for test coverage (can be other)
    group = "reporting"
    description = "Generate unified Jacoco code coverage report"

    reports {
        xml.enabled = true
        html.enabled = true
    }

    def fileFilter = [
            '**/*Test*.*',
            '**/AutoValue_*.*',
            '**/*JavascriptBridge.class',
            '**/R.class',
            '**/R$*.class',
            '**/Manifest*.*',
            'android/**/*.*',
            '**/BuildConfig.*',
            '**/*$ViewBinder*.*',
            '**/*$ViewInjector*.*',
            '**/Lambda$*.class',
            '**/Lambda.class',
            '**/*Lambda.class',
            '**/*Lambda*.class',
            '**/*$InjectAdapter.class',
            '**/*$ModuleAdapter.class',
            '**/*$ViewInjector*.class',
            '**/*_MembersInjector.class', //Dagger2 generated code
            '*/*_MembersInjector*.*', //Dagger2 generated code
            '**/*_*Factory*.*', //Dagger2 generated code
            '*/*Component*.*', //Dagger2 generated code
            '**/*Module*.*' //Dagger2 generated code
    ]
    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter) //we use "debug" build type for test coverage (can be other)
    def mainSrc = "${project.projectDir}/src/main/java"

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: "$buildDir", includes: [
            "jacoco/testDebugUnitTest.exec", //we use "debug" build type for test coverage (can be other)
            "outputs/code-coverage/connected/*coverage.ec"
    ])
}

0 ответов

Другие вопросы по тегам