Поиск эффективного способа отображения комбинированного покрытия кода из локальных и инструментальных тестов внутри Android Studio - PullRequest
0 голосов
/ 12 марта 2020

С некоторого времени я использовал этот тип конфигурации 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 для тестовых запусков выглядит лучше, чем журналы командной строки:)

...