通过jacoco检查自动化代码覆盖率和报告分析

背景: 虽然jacoco出来也有一段时间了,文章也有,但是网上的文章都是新建的一个测试工程,照着跑下来,到处都是坑…所以还是自己再研究一下吧,并且起码比他们的详细。

环境:
android studio 2.1.1 + gradle 2.10

搭建:
其实gradle自带的有jacoco插件的,只需要引入就好了,打开build.gradle,在第一行添加插件:

apply plugin: 'jacoco'

网络上的人是用 jacoco-android ,那么请略过,因为可能是因为版本更替,至少自带的没有这个插件。
然后,声明使用的jacoco版本,这个版本怎么来的,直接去官网复制最新的就行了(http://www.eclemma.org/jacoco/):
通过jacoco检查自动化代码覆盖率和报告分析_第1张图片
好了,引入插件,指定完版本,最后在buildTypes标签里面的debug开启就行了:

testCoverageEnabled true

ok,其实环境这就搭建完成了。

使用
大家都知道,用命令启动的,在前一篇的学习androidjunitrunner谷歌其实已经给了我们两条命令:

gradlew test/connectedAndroidTest

这两条命令是执行(单元)测试并生成一份报告,然后如果要测试代码覆盖率的话同样是类似的命令:

gradlew createDebugCoverageReport

然后报错:
这里写图片描述
好了,教程都是运行这条命令,死活报错,好吧,只能x墙问谷歌,然后发现其实这条命令是在jacoco框架里面自带的,并不是测试人员自己定义的,于是调用命令:
gradlew task查看,才发现了这条命令如果有渠道包的话需要带上渠道号,于是执行:

gradlew createOfficialDebugCoverageReport

好了,执行成功,所以这里要注意。
最后,生成报告的目录在build文件夹内,比较好找,就不多说了,后期打算集成到jenkins当中去。
PS:需要执行自动化用力报告和执行代码覆盖率报告的话,不用敲两行命令,直接一行就可以了:

gradlew connectedCheck

不过这会把渠道包都跑一遍,记得勾选只保留官方包就行了,不然很费时的。
这样可以一次输出两份报告。

分析
好了,报告有了,怎么分析呢,又怎么去自动化测试覆盖率呢?接下来就来说说吧。
通过jacoco检查自动化代码覆盖率和报告分析_第2张图片

Element:
可以点击进入看哪里覆盖了,可以精确到方法,可以看看哪个方法没有被覆盖到,然后查代码逻辑,补充用例。

Missed Instructions:
这个就是代码覆盖率了,绿色表示运行了的,红色表示没有。

Missed Branches:
分支覆盖率,其实个人理解就是条件语句中其他情况没有覆盖的情况

Missed Cxty:
没搞懂…

Missed Lines && Missed Methods && Missed Classes:
覆盖的行数和方法数以及类

好了,有了几个参数可以点击Element进入查看看哪里没有覆盖到,需要覆盖。

你可能感兴趣的:(自动化测试)