在工程下面的build.gradle 增加配置
1.增加Plugin
apply plugin: \'jacoco\'
2. 增加jacoco版本
jacoco{
version "0.7.4.201502262128"
}
3.申明一个gradle task
//jacocoTestReport依赖于connectedAndroidTest task,所以在执行jacoco之前需要先执行connectedAndroidTest,也就是说需要连接测试机(模拟器or真机)
task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports{
xml.enabled = false
html.enabled = true
csv.enabled = false
}
classDirectories = fileTree(
dir : "$buildDir/intermediates/classes/debug",
excludes : [
\'**/*Test.class\',
\'**/R.class\',
\'**/R$*.class\',
\'**/BuildConfig.*\',
\'**/Manifest*.*\'
]
)
def coverageSourceDirs = [\'src/main/java\']
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
additionalClassDirs = files(coverageSourceDirs)
executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
}
4. 打开testCoverageEnabled
buildTypes {
debug {
testCoverageEnabled = true
}
}
5. 完整的配置
apply plugin: \'com.android.application\'
apply plugin: \'jacoco\'
android {
compileSdkVersion 25
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.example.androidunittest"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard-rules.pro\'
testCoverageEnabled = true
}
buildTypes {
debug {
testCoverageEnabled = true
}
}
jacoco{
version "0.7.4.201502262128"
}
}
//jacocoTestReport依赖于connectedAndroidTest task,所以在执行jacoco之前需要先执行connectedAndroidTest,也就是说需要连接测试机(模拟器or真机)
task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports{
xml.enabled = false
html.enabled = true
csv.enabled = false
}
classDirectories = fileTree(
dir : "$buildDir/intermediates/classes/debug",
excludes : [
\'**/*Test.class\',
\'**/R.class\',
\'**/R$*.class\',
\'**/BuildConfig.*\',
\'**/Manifest*.*\'
]
)
def coverageSourceDirs = [\'src/main/java\']
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
additionalClassDirs = files(coverageSourceDirs)
executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
}
dependencies {
compile fileTree(dir: \'libs\', include: [\'*.jar\'])
androidTestCompile(\'com.android.support.test.espresso:espresso-core:2.2.2\', {
exclude group: \'com.android.support\', module: \'support-annotations\'
})
compile \'com.android.support:appcompat-v7:23.1.1\'
compile \'com.android.support.constraint:constraint-layout:1.0.2\'
testCompile \'junit:junit:4.12\'
androidTestCompile \'com.android.support.test:runner:0.5\'
androidTestCompile \'com.android.support.test:rules:0.5\'
androidTestCompile \'com.android.support.test.espresso:espresso-core:2.2.2\'
}
}
6. 运行报告
gradlew jacocoTestReport
运行生成报告命令可能出现的问题
1). Could not find com.android.tools.build:gradle:2.2.3
解决方法:
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath \'com.android.tools.build:gradle:2.2.3\'
}
}
2). Unsupported major.minor version 52.0
解决方法:
参考:http://blog.csdn.net/it_talk/article/details/50267573