2015-10-09 14 views
12

Voglio eseguire i miei test nell'app per Android e creare rapporti di copertura, quindi ho aggiunto la configurazione di Jacoco nel mio file build.gradle, ma non funziona.Jacoco Android createDebugCoverageReport non trovato

apply plugin: 'com.android.application' 

android { 

    compileSdkVersion 22 
    buildToolsVersion '22.0.1' 

    defaultConfig { 
     applicationId "mm" 
     minSdkVersion 12 
     targetSdkVersion 18 
    } 


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

    packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
} 

dependencies { 
    compile 'com.google.code.gson:gson:2.1' 
    compile files('libs/android-async-http-1.4.4.jar') 
    compile files('libs/freemarker.jar') 
    compile files('libs/greendao-1.3.1.jar') 
    compile files('libs/raygun4android-1.1.0.jar') 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.android.support:recyclerview-v7:22.2.0' 
    testCompile 'org.mockito:mockito-core:1.10.19' 
    testCompile 'org.hamcrest:hamcrest-library:1.3' 
    compile 'junit:junit:4.11' 

    androidTestCompile('junit:junit:4.11') { 
     exclude module: 'hamcrest-core' 
    } 

} 

buildscript { 
    repositories { 
     mavenLocal() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.3.1' 
     classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+' 
    } 
} 

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

jacoco { 
    version "0.7.1.201405082137" 
} 


jacoco { 
    toolVersion "0.7.1.201405082137" 
} 

def coverageSourceDirs = [ 
     'src/main/java', 
] 

task jacocoTestReport(type: JacocoReport, dependsOn: "testDebug") { 
    group = "Reporting" 
    description = "Generate Jacoco coverage reports after running tests." 
    reports { 
     xml.enabled = true 
     html.enabled = true 
    } 
    classDirectories = fileTree(
      dir: './build/intermediates/classes/debug', 
      excludes: ['**/R*.class', 
         '**/*$InjectAdapter.class', 
         '**/*$ModuleAdapter.class', 
         '**/*$ViewInjector*.class' 
      ]) 
    sourceDirectories = files(coverageSourceDirs) 
    executionData = files("$buildDir/jacoco/testDebug.exec") 
    doFirst { 
     new File("$buildDir/intermediates/classes/").eachFileRecurse { file -> 
      if (file.name.contains('$$')) { 
       file.renameTo(file.path.replace('$$', '$')) 
      } 
     } 
    } 
} 

lo so, non c'è problema con Gradle versione 1.3.0 e 1.3.1 che dovrebbe funzionare normalmente, ma con 1.3.1 ottengo Task 'createDebugCoverageReport' not found in root project.

risposta

10

è necessario abilitare il testCoverageEnabled:

buildTypes { 
    debug{ 
     debuggable true 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     testCoverageEnabled true 
    } 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     testCoverageEnabled true 
    } 
} 
+7

Sto avendo lo stesso problema come l'OP. Ho testato testCoverageEnabled su true, ma non sembra essere d'aiuto. –

+0

Lo hai incluso nel buildType richiesto dei moduli in cui si trova il codice sorgente? –

Problemi correlati