Android 单元测试实战—— 基于Cobertra&sonarqube的单元测试覆盖率统计
Posted Alex_MaHao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 单元测试实战—— 基于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
即可。
以上是关于Android 单元测试实战—— 基于Cobertra&sonarqube的单元测试覆盖率统计的主要内容,如果未能解决你的问题,请参考以下文章
Android 单元测试实战—— 基于Cobertra&sonarqube的单元测试覆盖率统计
Android 单元测试实战—— 基于Cobertra&sonarqube的单元测试覆盖率统计