2015-10-09 16 views
12

Androidアプリでテストを実行してカバレッジレポートを作成したいので、Jacoco設定をbuild.gradleファイルに追加しましたが、動作しません。私が知っているJacoco Android createDebugCoverageReportが見つかりません

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

は、Gradleのバージョン1.3.0で問題があると1.3.1とそれは私がTask 'createDebugCoverageReport' not found in root projectを取得1.3.1でただし、正常に動作する必要があります。

答えて

10

あなたは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

私はOPと同じ問題を抱えています。私はtestCoverageEnabledをtrueに設定していますが、それは役に立たないようです。 –

+0

ソースコードがあるモジュールの必要なbuildTypeに含まれていますか? –

関連する問題