Android 单元测试实战(3)—— 基于Cobertra&sonarqube的单元测试覆盖率统计

Jacoco

在聊到单元测试覆盖率的时候,基本上都会使用jacoco做覆盖率检测,但通过集成发现与Powermock有兼容性问题。

对于Powermock上使用@PrepareForTest的类,都无法检测覆盖率。导致覆盖率几乎为0。

Powermock的开发者也表明是由于底层实现逻辑上,与jacoco冲突导致的。计划未来去解决该问题。

jacoco提供了一种静态的代码覆盖率检测,但搞了很久,使用gradle一直没有跑通,最后放弃。

Cobertra

该工具也是一个覆盖率检测工具。有开发者提供了Gradle的支持。

https://github.com/stevesaliman/gradle-cobertura-plugin

对于老版本的gradle,无需做任何改变,按照流程集成就好了。

新版本由于class的存放路径发生了变化,所以需要修改一下。最终我的gradle修改如下:

ext {
    target = "${project.buildDir.path}/intermediates/javac/360-sydDebug/compile360-sydDebugJavaWithJavac/classes"
}
apply plugin: 'net.saliman.cobertura'
cobertura {
    androidVariant = "360-sydDebug"
    coverageFormats = ["xml"]
    auxiliaryClasspath = files(target)
    coverageIncludes = [".*com.xxxx.*"]
}

集成之后,只需要运行./gradlew app:cobertra即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值