【问题标题】:Android Studio 1.4 Code CoverageAndroid Studio 1.4 代码覆盖率
【发布时间】:2016-02-28 17:40:30
【问题描述】:

我在获取项目的代码覆盖率时遇到了一些麻烦。我的单元和 UI 测试放在“androidTest”文件夹中。测试运行顺利,但是当我尝试获取代码覆盖率时(无论是运行覆盖率还是 CLI 中的 ./gradlew createDebugCoverageReport),我都会遇到不同类型的错误。

这是我的 build.gradle。

apply plugin: 'com.android.application'
apply plugin: 'jacoco'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        debug {
            testCoverageEnabled = true
        }

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

    jacoco {
        version "0.7.1.201405082137"
    }
}

dependencies {
    compile 'junit:junit:4.12'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.android.support:design:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.+'
    compile 'com.android.support:cardview-v7:22.0.+'
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.github.bmarrdev:android-DecoView-charting:v0.9.3'
    compile 'com.github.PhilJay:MPAndroidChart:v2.1.5'
    compile 'com.wefika:horizontal-picker:1.1.0'
    compile 'info.hoang8f:android-segmented:1.0.6'
    compile 'com.google.guava:guava:18.0'

    testCompile 'com.android.support.test:testing-support-lib:0.1'
    testCompile 'com.android.support:support-annotations:22.0.1'
    testCompile 'com.android.support.test:runner:0.4.1'
    testCompile 'com.android.support.test:rules:0.4.1'
    testCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    testCompile 'org.hamcrest:hamcrest-library:1.3'

    androidTestCompile 'com.android.support:support-annotations:22.0.1'
    androidTestCompile 'com.android.support.test:runner:0.4.1'
    androidTestCompile 'com.android.support.test:rules:0.4.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'

    androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.0') {
        exclude group: 'com.android.support', module: 'appcompat'
        exclude group: 'com.android.support', module: 'support-v4'
        exclude module: 'recyclerview-v7'
    }
}

请告诉我如何为“androidTest”文件夹中的 InstrumentationTestCase 和 ActivityInstrumentationTestCase2 设置代码覆盖率。

谢谢!

【问题讨论】:

    标签: android unit-testing gradle code-coverage jacoco


    【解决方案1】:

    这就是我在 build.gradle (app) 文件中设置 jacoco 的方式。它运行良好,没有任何问题。该设置用于使用 JUnit 4.12 进行单元测试。希望这会有所帮助

    jacoco {
          toolVersion = "0.7.1.201405082137"
    }
    
    def coverageSourceDirs = {
             '../app/src'
    }
    
    task jacocoTestReport(type: org.gradle.testing.jacoco.tasks.JacocoReport, dependsOn: "test"){
        group = "Reporting"
        description = "Generate Jacoco coverage reports"
        classDirectories = fileTree(
              dir: '../app/build/intermediates/classes',
              excludes: ['**/R.class',
                         '**/R$.class',
                         '**/*$ViewInjector*.*',
                         '**/BuildConfig.*',
                         '**/Manifest*.*']
        )
       additionalSourceDirs = files(coverageSourceDirs)
       sourceDirectories = files(coverageSourceDirs)
       executionData = files('../app/build/jacoco/testDebugUnitTest.exec')
    
       reports {
          xml.enabled = true
          html.enabled = true
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-21
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2013-09-12
      相关资源
      最近更新 更多