У меня проблемы с настройкой jacoco с Android, чтобы получить покрытие для ручного тестирования.Я могу сгенерировать файл .exec при тестировании приложения вручную.Однако при запуске jacocoTestReport с файлом .exec создаются отчеты без покрытия:
![enter image description here](https://i.stack.imgur.com/GG6ox.png)
Я уже следовал следующим учебным пособиям и темам, не решая эту проблему:
В сборке.gradle У меня есть
jacoco{
version "0.7.9"
}
sourceSets {
main {
resources.includes = ['**/jacoco-agent.properties']
}
}
task jacocoTestReport(type:JacocoReport) {
group = "Reporting"
description = "Generate Jacoco coverage reports"
// exclude auto-generated classes and tests
def fileFilter = ['**/R.class', '**/R$*.class',
'**/BuildConfig.*', '**/Manifest*.*',
'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])
additionalSourceDirs = files([
"${buildDir}/generated/source/buildConfig/debug",
"${buildDir}/generated/source/r/debug"
])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec', '**/*.ec'])
reports {
xml.enabled = true
xml.destination = "${buildDir}/jacocoTestReport.xml"
csv.enabled = false
html.enabled = true
html.destination = "${buildDir}/reports/jacoco"
}
}
В методе onStop () у меня есть:
protected void onStop() {
String TAG = "jacoco";
// use reflection to call emma dump coverage method, to avoid
// always statically compiling against emma jar
String coverageFilePath = "/sdcard/coverage.exec";
java.io.File coverageFile = new java.io.File(coverageFilePath);
try {
Class<?> emmaRTClass = Class.forName("com.vladium.emma.rt.RT");
Method dumpCoverageMethod = emmaRTClass.getMethod("dumpCoverageData",
coverageFile.getClass(), boolean.class, boolean.class);
dumpCoverageMethod.invoke(null, coverageFile, false, false);
Log.e(TAG, "generateCoverageReport: ok");
} catch (Exception e) {
new Throwable("Is emma jar on classpath?", e);
}
super.onStop();
EventBus.getDefault().unregister(this);
}
Внутри папки ресурсов у меня есть файл "jacoco-agent.properties".В этом файле у меня есть:
destfile=/storage/sdcard/coverage.exec
Я тестирую на эмуляторе Android 6.0 с Android Studio 3.3.1.