2015-03-09 5 views
9

С момента выпуска 'com.android.tools.build:gradle:1.1.0' Я перемещаю большую часть своего тестового кода Java от androidTest до папки test, потому что тесты JVM намного быстрее. Но я не могу переместить все тесты. Мне действительно нужны тесты устройств из-за некоторых вещей ContentProvider.Объединить покрытие jacoco от androidTest и тест

У меня было покрытие на 100% кода, прежде чем я начал мигрировать. Когда я в настоящее время запускаю покрытие кода jacoco, я получаю 40% для папки androidTest и 71% для папки test. Мой код проверен на 100%, но у меня нет отчета, подтверждающего это.

Есть ли способ объединить оба отчета? Я нашел JacocoMerge, но не смог заставить его работать.

Вот выход из папки androidTest: build/outputs/reports/coverage/debug/index.html

А вот выход test папку build/reports/jacoco/generateJacocoTestReports/html/index.html генерируемой с этой Gradle задачи:

def coverageSourceDirs = [ 
     '../library/src/main/java' 
] 

task generateJacocoTestReports(type: JacocoReport, dependsOn: "test") { 
    group = "Reporting" 
    description = 'Generate Jacoco Robolectric unit test coverage reports' 

    classDirectories = fileTree(
      dir: '../library/build/intermediates/classes/debug', 
      excludes: ['**//*R.class', 
         '**//*R$*.class', 
         '***/*//*$ViewInjector*.*', 
         '**//*BuildConfig.*', 
         '**//*Manifest*.*'] 
      ) 
    sourceDirectories = files(coverageSourceDirs) 
    additionalSourceDirs = files(coverageSourceDirs) 
    executionData = files('../library/build/jacoco/testDebug.exec') 
} 
+0

Если вы нашли решение для этого я бы признателен за любые подсказки вы можете предоставить. Благодарю. – Kevin

ответ

0

В случае использования Jenkins с JaCoCo плагин вы можете просто настроить все файлы jacoco.exec и emma.ec в «Путь к файлам exec», чтобы сообщалось об объединенном охвате.

connectedAndroidTest приведет к тому, что файлы emma.ec будут помещены в «выходы» по умолчанию.

6

Не уверен, что, если вам все еще нужно, но я недавно опубликовал плагин Gradle, который может помочь вам в этом: https://github.com/paveldudka/JacocoEverywhere

+0

Действительно полезный плагин –

+0

Спасибо, Павел, отлично работает для меня! – gregko

1

Существует также Gradle плагин https://github.com/palantir/gradle-jacoco-coverage что acording к документации может сделать эту работу тоже.

Я попытался использовать один подмодуль с двумя различными тестовыми частями, но он хорошо подходит для слияния тестовых частей с двумя субмодулями.

См Gradle jacoco coverage report with more than one submodule(s)? подробности

0

JacocoMerge задача может быть использована для объединения 2 или более данных исполнения jacoco.

Ниже задачи могут быть добавлены в файл корневого градиента и при успешном выполнении этой задачи объединенные данные выполнения можно найти в каталоге корневой сборки. (сборки/jacoco/mergeJacocoReport.exec)

evaluationDependsOnChildren() 
//Missing this might be a problem in fetching JacocoReport tasks from sub-modules. 

task mergeJacocoReport(type: org.gradle.testing.jacoco.tasks.JacocoMerge) { 
    group "Jacoco Report" 
    description "Merge Jacoco Code Coverage Report" 

    def executionFiles = fileTree("$rootProject.rootDir", { 
     includes = ['**/*.exec'] 
    }) 

    setExecutionData(executionFiles) 

} 

subprojects.each { $project -> 
    def tasks = $project.tasks.withType(JacocoReport) 

    if (tasks != null) { 
     mergeJacocoReport.dependsOn << tasks 
    } 
} 
Смежные вопросы