快速提升Android App 的代码覆盖率
作者:Sergey Grekov 发布时间:[ 2017/7/10 15:14:01 ] 推荐标签:软件测试 移动测试 APP测试
现在如果我们不想让测试覆盖率如此低的代码进入到生产环境中,我们能做些什么呢?JacocoCoverageVerification 这个 task 能够帮我们解决这个问题!
这个 task 依赖于前面的 customJacocoTestReport task,如果执行它,将会首先生成测试覆盖报告然后接着对其进行分析。这个 task 的配置中包含如何找到源代码类所在的路径,以及 violationRules 配置块。violationRules 配置块本身又包含了一些规则块,只要你愿意,你可以添加尽可能多的这种规则块。在这个例子中,我配置了三个规则块:
规则一
如果没有被单元测试覆盖到的指令比率高于 60%,那么构建将会失败:
规则二
如果代码分支(if,switches 等)有多达 80% 以上没有被单元测试覆盖到,那么构建将会失败:
规则三
在这个规则中我声明了在 presenter 包中的每个类都必须至少有一个单元测试。请注意所有匿名类都会被当作一个个独立的类来对待。
想要了解更多关于规则的语法,可查看:http://www.jacoco.org/jacoco/trunk/doc/ant.html。(译者注:关于在 gradle 中配置 JaCoCo,可以参见:https://docs.gradle.org/current/userguide/jacoco_plugin.html)
此时我们执行命令:
将会得到如下所示的由于违反规则所导致的错误:
从上面可以看到,示例工程的覆盖率不符合我们规则,因此需要编写更多的单元测试!
在这个示例工程仓库的 VerificationPassed 分支,你可以看到覆盖率满足规则的代码。通过这种方式,你可以配置构建脚本,并将测试覆盖率验证添加到构建过程中。
JaCoCo 是一个功能强大的工具,可以帮助你增加代码仓库的测试覆盖率。当然,如何定义规则和代码覆盖率取决于你的和具体项目的需求,但这是一个很好的代码仓库的健康指标,值得尝试将其引入你的构建管道中。在我们的项目中,测试覆盖率从开始的 0.4 慢慢增加到 0.6,并且还在继续增长。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11