2015-10-09 20 views
12

Tôi muốn chạy thử nghiệm trong ứng dụng Android và tạo báo cáo bảo hiểm, vì vậy tôi đã thêm cấu hình Jacoco vào tệp build.gradle của mình, nhưng nó không hoạt động.Jacoco Android createDebugCoverageReport không tìm thấy

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

Tôi biết, có vấn đề với phiên bản gradle 1.3.0 và 1.3.1 với nó nên làm việc bình thường, tuy nhiên với 1.3.1 tôi nhận được Task 'createDebugCoverageReport' not found in root project.

Trả lời

10

Bạn phải kích hoạt 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

Tôi đang gặp vấn đề tương tự như OP. Tôi đã testCoverageEnabled được đặt thành true, nhưng nó dường như không giúp ích gì. –

+0

Bạn có bao gồm trong buildType bắt buộc của (các) mô-đun mà mã nguồn không? –

Các vấn đề liên quan