С некоторого времени я использовал этот тип конфигурации Jacoco для создания комбинированного отчета о покрытии из тестов Instrumented и Local Unit:
apply plugin: 'jacoco'
jacoco {
toolVersion = "$jacoco_version"
}
task jacocoTestReport(type: JacocoReport) {
group "verification"
description "Generate Jacoco coverage reports."
dependsOn 'testDebugUnitTest'
dependsOn 'createDebugCoverageReport'
reports {
xml.enabled = true
html.enabled = true
html.destination file("${project.buildDir}/coverage-report")
}
def javaClasses = []
def javaSrc = []
def execution = []
def fileFilter = [
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*',
'**/*_MembersInjector.class',
'**/Dagger*Component.class',
'**/Dagger*Component$Builder.class',
'**/*_*Factory.class',
'**/*ComponentImpl.class',
'**/*SubComponentBuilder.class'
]
rootProject.subprojects.each { proj ->
println "buildDir: ${proj.buildDir}"
println "projectDir: ${proj.projectDir}"
javaClasses << fileTree(dir: "$proj.buildDir/intermediates/javac", excludes: fileFilter)
javaSrc << "$proj.projectDir/src/main/java"
execution << fileTree(dir: proj.buildDir,
includes: [
'jacoco/testDebugUnitTest.exec',
'outputs/code_coverage/**/*.ec'
]
)
}
sourceDirectories.from = files([javaSrc])
classDirectories.from = files([javaClasses])
println execution
executionData.from = files(execution)
doLast() {
println file("${reports.html.destination}/index.html")
}
}
Это не так удобно, как запуск тестов непосредственно в IDE, но это Я знаю, что это единственный способ запускать оба типа тестов одновременно.
Одна из причин, по которой запуск тестов в Android Studio лучше, заключается в том, что она может отображать процент покрытия на вкладке "Файлы проекта" и выделять непроверенные строки. прямо в коде.
Сегодня я обнаружил, что есть способ импортировать эти данные. Если вам
- go для анализа | Показать данные покрытия кода | «+»
- Вы можете
select *.exec
файлы, созданные во время локальных тестов.
Инструментальные тесты создают файлы *.ec
, но если вы измените расширение на *.exec
, оно будет работать идеально:)
Единственная проблема с этим решением состоит в том, что у вас есть импортировать эти файлы вручную после каждого выполнения Jacoco.
Кто-нибудь знает, есть ли способ добавить эти файлы автоматически?
Или есть ли способ запустить эти тесты, используя Run Configuration
в Android Studio, поскольку интерфейс Intellij для тестовых запусков выглядит лучше, чем журналы командной строки:)