JaCoCo не работает с робоэлектрическими тестамиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 JaCoCo не работает с робоэлектрическими тестами

Сообщение Anonymous »

Мне хотелось создавать отчеты о покрытии кода для моих тестов JUnit в моем проекте Android, поэтому я добавил плагин JaCoCo gradle. Это файл build.gradle моего уровня проекта:

Код: Выделить всё

apply plugin: 'jacoco'

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta6'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}

allprojects {
repositories {
jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

subprojects { prj ->
apply plugin: 'jacoco'

jacoco {
toolVersion '0.7.6.201602180812'
}

task jacocoReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
group = 'Reporting'
description = 'Generate Jacoco coverage reports after running tests.'

reports {
xml {
enabled = true
destination "${prj.buildDir}/reports/jacoco/jacoco.xml"
}
html {
enabled = true
destination "${prj.buildDir}/reports/jacoco"
}
}

classDirectories = fileTree(
dir: 'build/intermediates/classes/debug',
excludes: [
'**/R*.class',
'**/BuildConfig*',
'**/*$$*'
]
)

sourceDirectories = files('src/main/java')
executionData = files('build/jacoco/testDebugUnitTest.exec')

doFirst {
files('build/intermediates/classes/debug').getFiles().each { file ->
if (file.name.contains('$$')) {
file.renameTo(file.path.replace('$$', '$'))
}
}
}
}
}

jacoco {
toolVersion '0.7.6.201602180812'
}

task jacocoFullReport(type: JacocoReport, group: 'Coverage reports') {
group = 'Reporting'
description = 'Generates an aggregate report from all subprojects'

//noinspection GrUnresolvedAccess
dependsOn(subprojects.jacocoReport)

additionalSourceDirs = project.files(subprojects.jacocoReport.sourceDirectories)
sourceDirectories = project.files(subprojects.jacocoReport.sourceDirectories)
classDirectories = project.files(subprojects.jacocoReport.classDirectories)
executionData = project.files(subprojects.jacocoReport.executionData)

reports {
xml {
enabled = true
destination "${buildDir}/reports/jacoco/full/jacoco.xml"
}
html {
enabled = true
destination "${buildDir}/reports/jacoco/full"
}
}

doFirst {
//noinspection GroovyAssignabilityCheck
executionData = files(executionData.findAll { it.exists() })
}
}
Он прекрасно работает при запуске ./gradlew jacocoFullReport. Но, к сожалению, не сообщается о покрытии для тестов, запускаемых с помощью RobolectricTestRunner (инструкции, которые явно вызываются в тестах, не считаются охваченными). Тесты без аннотации @RunWith или запуск с отчетом MockitoJUnitTestRunner работают нормально.

Будем благодарны за любую помощь в решении этой проблемы.

Будем признательны за любую помощь в решении этой проблемы.

Будем признательны за любую помощь.

p>

Обновление 1: Я заметил, что мне следует использовать RobolectricGradleTestRunner. Но это не помогло.

Подробнее здесь: https://stackoverflow.com/questions/357 ... tric-tests
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»