我想在
Android应用程序中运行我的测试并创建coverage报告,所以我将Jacoco配置添加到我的build.gradle文件中,但它不起作用.
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('$$','$')) } } } }
我知道,毕业版1.3.0和1.3.1有问题,应该正常工作,但是在1.3.1中,我得到根项目中没有找到任务“createDebugCoverageReport”.
解决方法
您必须启用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 } }