Нулевое покрытие при тестировании с эспрессо
У меня есть некоторые проблемы, чтобы получить тестовое покрытие для моего приложения для 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"
])
}