相关疑难解决方法(0)

如何使用Android gradle插件0.10.0或更高版本获取jacoco覆盖率报告?

我正在尝试使用Gradle Android插件0.10.2获取测试覆盖率报告.但是在运行一些测试后我仍然无法获得覆盖率报告.(connectedAndroidTest).

我的主模块的build.gradle是:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        debug {
            testCoverageEnabled true
        }

        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}
Run Code Online (Sandbox Code Playgroud)

而project的build gradle的buildscript部分是:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.10.+'
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦我gradlew connectedAndroidTest从终端运行,我可以在文件夹中找到coverage-instrumented-classescode-coverage文件build夹.但我coveragereports文件夹中找不到文件夹.(只有我能看到的是androidTests文件夹) …

android unit-testing gradle jacoco android-gradle-plugin

38
推荐指数
4
解决办法
4万
查看次数

Jacoco代码覆盖文件空白导致虚假覆盖报告

可以在此处找到包含用于此问题的代码的Github仓库:https: //github.com/thenewmr/UnitTestCoverageExample

我们一直在努力通过正确生成的Jacoco获取代码覆盖率报告.

我们遵循了互联网上的各种指南,包括这个帕特里克·麦克拉伦,他挂在他的回答这个问题.

我们还看了关于堆栈溢出的各种问题,但到目前为止还没有快乐.

这是我们到目前为止所用的内容(以子弹点的形式,以免使这个问题太长而无法阅读):

  • 添加testCoverageEnabled = true到调试闭包创建了一个名为"createDebugCoverageReport"的任务
  • 运行此任务:

    • 为我们的Android测试生成报告:app/build/outputs/reports/androidTests/connected/index.html,准确报告测试通过和失败等
    • 但是在app/build/outputs/reports/coverage/debug/index.html上的覆盖率报告不准确(0%覆盖率)
    • 它还会在以下位置生成看似空的覆盖率数据:app/build/outputs/code-coverage/connected/coverage.ec
  • 现在,如果我们添加以下内容:

    apply plugin: 'jacoco'
    
    //specify which directories should be examined by jacoco
    def coverageSourceDirs = [
            'src/main/java'
    ]
    
    task jacocoTestReport(type:JacocoReport, dependsOn: "testDebug") {
        group = "Reporting"
    
        description = "Generate Jacoco coverage reports"
    
        classDirectories = fileTree(
                dir: 'build/intermediates/classes/debug',
                excludes: ['**/R.class',
                           '**/R$*.class',
                           '**/*$ViewInjector*.*',
                           '**/BuildConfig.*',
                           '**/Manifest*.*']
        )
    
        additionalSourceDirs = files(coverageSourceDirs)
        sourceDirectories = files(coverageSourceDirs)
        executionData = files('build/jacoco/testDebug.exec')
    
        reports { …
    Run Code Online (Sandbox Code Playgroud)

android unit-testing code-coverage gradle jacoco

4
推荐指数
1
解决办法
1875
查看次数

Jacoco 在 Android 项目中报告了单元测试对 Kotlin 类的 0 覆盖率

我正在使用 Android Gradle 插件 3.0.0。

我正在将一个 Android 应用程序从 java 迁移到 kotlin。我的应用程序包含 Java 和 Kotlin 类,测试使用 Java。

我跑./gradlew clean jacocoTestReport

这将运行单元测试 ( src/test) 和仪器测试 ( src/androidTest)。

jacoco in 生成的报告app/build/reports/jacoco/jacocoTestReport/html/index.html没有显示单元测试确实涵盖了 Kotlin 类的覆盖率。

该报告确实从仪器测试中正确显示了覆盖率。

注意:我遇到了这些其他问题,它们不是完全相同的问题:

我的应用程序模块的 build.gradle 的相关部分:

apply plugin: 'jacoco'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
...
android {
    defaultConfig {
        sourceSets {
            main.java.srcDirs …
Run Code Online (Sandbox Code Playgroud)

junit android gradle jacoco kotlin

4
推荐指数
1
解决办法
2765
查看次数