我有测试情况下,简单的Android项目。
I have a simple android project with test cases.
ProjNameProject
--build.gradle
--ProjName
----build.gradle
我看到,默认的Android新版本系统默认提供基本的测试结果。 (万岁!)
I see that by default android's new build system provides basic test results by default. (Hooray!)
现在我想看看code覆盖率为好。我知道如何使用Emma和Ant脚本来设置它,但是我不希望在这里运行Ant脚本。我觉得用新编译系统,会破坏我的目的。
Now I want to see code coverage as well. I know how to set this up using Emma and Ant scripts, however I don't want to run Ant scripts here. I feel that would defeat the purpose of me using the new build system.
我已经试过被发现在Github上那几个的Cobertura插件。其中特别: https://github.com/stevesaliman/gradle-cobertura-plugin
I've tried a few Cobertura plugins that were found on Github. One in particular: https://github.com/stevesaliman/gradle-cobertura-plugin
但是,如果我尝试使用插件在 ProjName
建立文件,然后我得到有关的Java
插件错误。我读tools.android.com,添加了的Java
插件会产生这种行为。我不会把它应用使的Cobertura插件必须如果我尝试使用插件的主构建文件,然后我看不出java的错误,但现在我明白了:
However if I try to use the plugin in the ProjName
build file then I get errors about the java
plugin. I read on tools.android.com that adding the java
plugin will generate this behavior. I'm not applying it so the cobertura plugin must be.If I try to use the plugin in the main build file then I don't see the java errors but now i see:
Could not find net.sourceforge.cobertura:cobertura:1.9.4.1.
Required by:
:ProjNameProject:unspecified
我该怎么办?
What do I do??
JaCoCo支持添加到Android的摇篮插件v0.10(http://tools.android.com/tech-docs/new-build-system).
JaCoCo support was added to the Android gradle plugin v0.10 (http://tools.android.com/tech-docs/new-build-system).
Enable in the tested Build Type with testCoverageEnabled = true
android {
jacoco {
version = '0.6.2.201302030002'
}
}
我能得到JaCoCo覆盖范围Robolectric工作按照http://chrisjenx.com/gradle-robolectric-jacoco-dagger/.
apply plugin: 'android'
apply plugin: 'robolectric'
apply plugin: 'jacoco'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:appcompat-v7:19.1.+'
androidTestCompile fileTree(dir: 'libs/test', include: '*.jar')
androidTestCompile 'junit:junit:4.11'
androidTestCompile 'org.robolectric:robolectric:2.3'
androidTestCompile 'com.squareup:fest-android:1.0.+'
}
robolectric {
// Configure the set of classes for JUnit tests
include '**/*Test.class'
exclude '**/*AbstractRobolectricTestCase.class'
// Configure max heap size of the test JVM
maxHeapSize = "2048m"
}
jacoco {
toolVersion = "0.7.1.201405082137"
}
//Define coverage source.
//If you have rs/aidl etc... add them here.
def coverageSourceDirs = [
'src/main/java',
'src/gen'
]
...
// Add JaCoCo test reporting to the test task
// http://chrisjenx.com/gradle-robolectric-jacoco-dagger/
task jacocoTestReport(type: JacocoReport, dependsOn: "testDebug") {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled = true
html.enabled = true
}
// Class R is used, but usage will not be covered, so ignore this class from report
classDirectories = fileTree(
dir: './build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class'
])
sourceDirectories = files(coverageSourceDirs)
executionData = files('build/jacoco/testDebug.exec')
}