Android Gradle Code Coverage

后端 未结 2 1349
被撕碎了的回忆
被撕碎了的回忆 2020-12-31 14:18

I have a simple android project with test cases.

ProjNameProject
--build.gradle
--ProjName
----build.gradle

I see that by default android\'

2条回答
  •  萌比男神i
    2020-12-31 14:27

    JaCoCo support was added to the Android gradle plugin v0.10 (http://tools.android.com/tech-docs/new-build-system).

    Enable in the tested Build Type with testCoverageEnabled = true
    
    android {
      jacoco {
        version = '0.6.2.201302030002'
      }
    }
    

    I was able to get JaCoCo coverage working with Robolectric by following http://chrisjenx.com/gradle-robolectric-jacoco-dagger/.

    apply plugin: 'android'
    apply plugin: 'robolectric'
    apply plugin: 'jacoco'
    
    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        compile 'com.android.support:appcompat-v7:19.1.+'
    
        androidTestCompile fileTree(dir: 'libs/test', include: '*.jar')
        androidTestCompile 'junit:junit:4.11'
        androidTestCompile 'org.robolectric:robolectric:2.3'
        androidTestCompile 'com.squareup:fest-android:1.0.+'
    }
    
    robolectric {
        // Configure the set of classes for JUnit tests
        include '**/*Test.class'
        exclude '**/*AbstractRobolectricTestCase.class'
    
        // Configure max heap size of the test JVM
        maxHeapSize = "2048m"
    }
    
    jacoco {
        toolVersion = "0.7.1.201405082137"
    }
    
    //Define coverage source.
    //If you have rs/aidl etc... add them here.
    def coverageSourceDirs = [
        'src/main/java',
        'src/gen'
    ]
    
    ...
    
    // Add JaCoCo test reporting to the test task
    // http://chrisjenx.com/gradle-robolectric-jacoco-dagger/
    task jacocoTestReport(type: JacocoReport, dependsOn: "testDebug") {
        group = "Reporting"
        description = "Generate Jacoco coverage reports after running tests."
        reports {
            xml.enabled = true
            html.enabled = true
        }
    
        // Class R is used, but usage will not be covered, so ignore this class from report
        classDirectories = fileTree(
            dir: './build/intermediates/classes/debug',
            excludes: ['**/R.class',
                       '**/R$*.class'
        ])
        sourceDirectories = files(coverageSourceDirs)
        executionData = files('build/jacoco/testDebug.exec')
    }
    

提交回复
热议问题