2015-10-09 17 views
12

Chcę uruchomić moje testy w aplikacji na Androida i tworzyć raporty zasięgu, więc dodałem konfigurację Jacoco do mojego pliku build.gradle, ale to nie działa.Jacoco Android createDebugCoverageReport nie znaleziono

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('$$', '$')) 
      } 
     } 
    } 
} 

wiem, nie ma problemu z Gradle wersji 1.3.0 i 1.3.1 ze powinno działać normalnie, jednak z 1.3.1 mam Task 'createDebugCoverageReport' not found in root project.

Odpowiedz

10

Musisz włączyć 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

Mam ten sam problem jak PO. Mam testCoverageEnabled ustawiony na true, ale nie wydaje się pomóc. –

+0

Czy jest on zawarty w wymaganym module buildType modułu (modułach), w którym znajduje się kod źródłowy? –