【安卓】为你的Android实现测试覆盖率
为你的Android实现测试覆盖率
Vaycent发布于 今天 02:59
为你的Android实现测试覆盖率
续上篇《为你的Android添加第一个单元测试》,继续优化我们的项目,为这个加解密项目实现测试覆盖率的追踪,从这篇你可以了解到:
- 实现Android的测试覆盖率
- 覆盖率指标的含义
实现Android的测试覆盖率
我们使用的是jacoco来实现测试覆盖率。
备注:我的项目环境为gradle 6.5,低于gradle 6.0的项目请自行查询另外的jacoco实现方式(gradle 6以上对文件权限进行了更改)。
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.5-SNAPSHOT
在全局的build.gradle添加一个jacoco的classpath
apply plugin: "jacoco-android"
在模块下的build.gradle添加jacoco-android插件
./gradlew clean jacocoTestReport
现在可以愉快地在命令行下运行此命令,得到测试覆盖率报告了。
覆盖率报告在app/build/jacoco/jacocoHtml/index.html下
覆盖率指标的含义
如图所示,这个是我们整个App项目的测试覆盖率报告。绿色部分和百分比是已测试覆盖到的,红色部分是未覆盖到部分。阅读这份报告应该是从右往左看(我的习惯),这些指标分别是:
- 类覆盖率
- 方法覆盖率
- 行覆盖率
- 圈复杂度覆盖率
- 逻辑分支覆盖率
- 指令覆盖率
类覆盖率 | 度量class类文件是否被测试 |
---|---|
方法覆盖率 | 度量被测程序的方法是否有被测试 |
行覆盖率 | 度量每行代码是否有被测试 |
圈复杂度覆盖率 | 度量方法里所有可能的最小路径数是否被测试 |
逻辑分支覆盖率 | 度量方法里if和switch语句分支覆盖情况 |
指令覆盖率 | 度量单个java二进制代码指令的覆盖情况 |
所以从右往左看,这些指标会逐步细化,就可以了解到项目代码的测试情况。我们经常看到一些管理人员提出要求如:“我们的项目要达到70%以上的代码覆盖率”,那他说的70%代码覆盖率到底指的是什么呢?抑或说,其实他也不知道指的是什么呢?这是个我一直百思不得其解的有趣问题。
测试覆盖率的思考
回到我们这个SecurityHelper测试全通过,覆盖率达到100%,那么:
- 测试覆盖率达到100%
- 是否代表这个代码质量就完美无暇呢?
- **如果不是,又怎么继续提升呢?
**
大家可以回复表达观点哦
作者联系方式:
iosandroid测试
阅读 33发布于 今天 02:59
本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
Vaycent
1 声望
0 粉丝
Vaycent
1 声望
0 粉丝
宣传栏
为你的Android实现测试覆盖率
续上篇《为你的Android添加第一个单元测试》,继续优化我们的项目,为这个加解密项目实现测试覆盖率的追踪,从这篇你可以了解到:
- 实现Android的测试覆盖率
- 覆盖率指标的含义
实现Android的测试覆盖率
我们使用的是jacoco来实现测试覆盖率。
备注:我的项目环境为gradle 6.5,低于gradle 6.0的项目请自行查询另外的jacoco实现方式(gradle 6以上对文件权限进行了更改)。
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.5-SNAPSHOT
在全局的build.gradle添加一个jacoco的classpath
apply plugin: "jacoco-android"
在模块下的build.gradle添加jacoco-android插件
./gradlew clean jacocoTestReport
现在可以愉快地在命令行下运行此命令,得到测试覆盖率报告了。
覆盖率报告在app/build/jacoco/jacocoHtml/index.html下
覆盖率指标的含义
如图所示,这个是我们整个App项目的测试覆盖率报告。绿色部分和百分比是已测试覆盖到的,红色部分是未覆盖到部分。阅读这份报告应该是从右往左看(我的习惯),这些指标分别是:
- 类覆盖率
- 方法覆盖率
- 行覆盖率
- 圈复杂度覆盖率
- 逻辑分支覆盖率
- 指令覆盖率
类覆盖率 | 度量class类文件是否被测试 |
---|---|
方法覆盖率 | 度量被测程序的方法是否有被测试 |
行覆盖率 | 度量每行代码是否有被测试 |
圈复杂度覆盖率 | 度量方法里所有可能的最小路径数是否被测试 |
逻辑分支覆盖率 | 度量方法里if和switch语句分支覆盖情况 |
指令覆盖率 | 度量单个java二进制代码指令的覆盖情况 |
所以从右往左看,这些指标会逐步细化,就可以了解到项目代码的测试情况。我们经常看到一些管理人员提出要求如:“我们的项目要达到70%以上的代码覆盖率”,那他说的70%代码覆盖率到底指的是什么呢?抑或说,其实他也不知道指的是什么呢?这是个我一直百思不得其解的有趣问题。
测试覆盖率的思考
回到我们这个SecurityHelper测试全通过,覆盖率达到100%,那么:
- 测试覆盖率达到100%
- 是否代表这个代码质量就完美无暇呢?
- **如果不是,又怎么继续提升呢?
**
大家可以回复表达观点哦
作者联系方式:
以上是 【安卓】为你的Android实现测试覆盖率 的全部内容, 来源链接: utcz.com/a/109528.html
得票时间