Sab*_*ado 9 android gradle android-studio
我有一个简单的android项目与测试用例.
ProjNameProject
--build.gradle
--ProjName
----build.gradle
Run Code Online (Sandbox Code Playgroud)
我看到默认情况下,android的新构建系统默认提供基本的测试结果.(万岁!)
现在我想看看代码覆盖率.我知道如何使用Emma和Ant脚本进行设置,但是我不想在这里运行Ant脚本.我觉得这会破坏我使用新构建系统的目的.
我尝试过在Github上找到的一些Cobertura插件.特别是:https: //github.com/stevesaliman/gradle-cobertura-plugin
但是,如果我尝试在ProjName构建文件中使用插件,那么我会收到有关java插件的错误.我在tools.android.com上读到,添加java插件会产生这种行为.我没有应用它,所以cobertura插件必须.
如果我尝试在主构建文件中使用插件,那么我没有看到java错误,但现在我看到:
Could not find net.sourceforge.cobertura:cobertura:1.9.4.1.
Required by:
:ProjNameProject:unspecified
Run Code Online (Sandbox Code Playgroud)
我该怎么办??
JaCoCo支持已添加到Android gradle插件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'
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过http://chrisjenx.com/gradle-robolectric-jacoco-dagger/让JaCoCo报道与Robolectric合作.
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')
}
Run Code Online (Sandbox Code Playgroud)
计划在新的Android构建系统中很快发布Emma支持:http://tools.android.com/tech-docs/new-build-system/roadmap
到目前为止,没有正式的方法来通过gradle运行emma与android.我猜测仪器可以很容易地实现,但是,你会错过一种告诉Android运行覆盖测试的方法.此外,目前还没有办法(据我所知)从设备中提取emma运行时覆盖率数据.
这个项目可能会让您感兴趣:https://github.com/stephanenicolas/Quality-Tools-for-Android.一旦emma进入Android Gradle插件,它就会更新.
---- UPDATE
如果它使用与Android插件不兼容的Java插件,则此插件无法使用Android.
| 归档时间: |
|
| 查看次数: |
18616 次 |
| 最近记录: |