统计 Android 单元测试代码覆盖率
上一篇 /
下一篇 2018-04-26 13:29:54
/ 个人分类:覆盖率测试
为程序编写
单元测试对于我一个境界比较low的程序员来说,简直就是噩梦,但是不得承认,为项目写测试是个非常正确、必要的工作,尤其是当项目越来越大,代码越来越多,测试代码可以及时检查出一次改动所带来的影响。
单元测试覆盖率可以从一方面检查测试的质量,这个数据也是 Boss 最想看见的,而较高的覆盖率是 Boss 最希望看见的。Java项目有个很好的工具 :jacoco,可以快速的统计处 Junit 测试代码的覆盖率,并能生成详细的报告,具体方法,网上可以找出很多。本文只讨论
Android 上的情况
Android 提供了一很方便的方法来统计单元测试覆盖率,很简单,也许是搜索的姿势不对,度娘愣是不告诉我,这时有个网速碉堡的 VPN 是件多么爽的事!
谷歌一下,你就知道!在这里和这里找到了方法,总结下:
环境
Android Studio 1.4
配置
build.gradle 文件 android节点下设置 testCoverageEnabled 属性和 jacoco ,如下所示:
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { testCoverageEnabled = true } } jacoco { version "0.7.4.201502262128" } |
这里是 Module app 下的 build.gradle 文件所有内容:
apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.coderpage.coveragetest" minSdkVersion 9 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { testCoverageEnabled = true } } jacoco { version "0.7.4.201502262128" } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:21.0.3' } |
生成覆盖率报告
$ ./gradlew createDebugCoverageReport
在 ${builddir}/reports/coverage/debug/index.html 就会出现测试覆盖率报告了
遇到的坑
因为开始用的是 gradle 1.3.0 ,运行脚本命令的时候出现了错误:
Task ‘createDebugCoverageReport’ not found in root project
在 这里 找到了原因,在 gradle 1.3.0 版本,移除了 createDebugCoverageReport Task,把 gradle 升级一下版本到 gradle 1.3.1 就 OK 了!
收藏
举报
TAG: