-
概述
- 使用 idea 自带的 code coverage 工具
-
背景
- 了解 白盒测试用例设计 和 测试覆盖率 之后, 大概就需要 实践 了
- 实践的话, 还是需要 工具 来检验效果
-
工具选取
- 选项
- JaCoCo
- IDEA Code Coverage
- 结果
-
两个都想试试
- 先看看 IDEA CC, 这个比较简单
- JaCoCo 感觉更加复杂
- 指标
- 使用的场景都更加复杂
-
先讲 IDEA Code Coverage
- 简单
- Idea 自带, 集成方便
-
- 选项
1. 准备
-
理论基础
- 白盒测试用例设计
- 测试覆盖率
-
环境
- os
- win 10
- ide
- idea 2018.2
- 组件
- java
- jdk8
- testng
- 6.14.3
- maven
- 3.6.0
- java
- os
-
代码
- maven architecture
- quickstart
- maven architecture
-
其他
-
idea 插件
- coverage
- 这个一定要有
- 有了, 一定要打开
- idea 添加插件, 我就不讲了
- coverage
-
testng 的配置文件
- 这个我也不细讲了
- 自动生成配置文件的插件, 我之前讲过
- 配置文件里一些主要的配置, 我也讲过
- 这个我也不细讲了
-
2. 触发
-
概述
- 通过 执行测试, 触发 Coverage 插件
-
步骤
- 执行测试
- 进入某个测试类
- 比如 maven 工程自带的 AppTest 类
- 执行测试
- 在 类 中右键
- 选择 'Run Apptest with Coverage'
- 当然, 执行方式有很多
- 方法
- 类
- 配置文件
- 进入某个测试类
- 执行测试
-
结果
- 测试执行完毕
- 默认在 idea 右边, 弹出一个 coverage 的插件
-
问题
- 如果没有出现怎么办
- 这个需要确认这些东西
- 插件是否下载
- 插件是否激活
- coverage 视图是否激活
- File > Settings > Build, Execution, Deployment > Coverage
- Active coverage view 选项
- 记得打钩
- Active coverage view 选项
- File > Settings > Build, Execution, Deployment > Coverage
- 这个需要确认这些东西
- 如果没有出现怎么办
3. Coverage 视图简单介绍
-
概述
- 简单说下视图里的内容
- 其实没啥好说的, 操作两下, 就明白了
- 简单说下视图里的内容
-
标签
-
标题
- 你执行 测试, 所对应的 Configuration
- 这意味着, 你又可以有地方调参数了...
- 你执行 测试, 所对应的 Configuration
-
左边一列的操作
- 向上
- 平铺展示
- coverage 视图焦点, 控制代码展示窗口
- 代码展示窗口, 控制 coverage 视图焦点,
- 生成报告
- 选择 文件路径, 生成报告
- 报告内容, 并不会很多
- 自己看看, 就明白了了
- 关闭视图
-
表格内容
-
元素
- 包或者文件
-
class, %
- 类覆盖率
-
method, %
- 方法覆盖率
-
line, %
- 行覆盖率
-
-
表格交互
- 单击包
- 进入 包内, 并展示包内覆盖率
- 单击类
- 代码会跳转的类, 并且会聚焦到没有覆盖的位置
- 单击包
-
4. 代码区域
-
概述
- 执行 带覆盖率的测试 后, 代码区域也会发生变化
- 我这边默认是的 coverage 模式是 simpling
- 所以我先按照这个讲...
-
代码窗口
- 侧边栏
-
色块
- 红色
- 没有覆盖
- 绿色
- 覆盖至少一次
- 黄色
- 条件覆盖不充分
- 鼠标点击颜色
- 会出现 浮动的小窗
- 没啥前端背景, 所以这些东西准确叫啥, 真的让我很为难
- 红色
-
浮动小窗
- 顶部控件
- 上下
- 在色块之间上下移动
- 灰色文件夹
- 暂时不可用, 后来再讲
- 字节码展示
- 开启新的小窗口, 展示 字节码
- 高端功能暂时用不了
- 开启新的小窗口, 展示 字节码
- 颜色设置
- 这个暂时用不了
- 默认颜色挺好的
- 这个暂时用不了
- 红叉
- 这个不是退出标签
- 这个是清楚这一轮的覆盖率数据
- 点的时候请注意
- 退出的话, 直接鼠标在别处点一下, 就行了
- 上下
- 顶部控件
-
- 侧边栏
5. Project 区域
-
概述
- Project 区域的覆盖率展示
-
惊喜
- 眼睑的同学, 已经有了新的发现
- Project 栏里的包树形图, 右侧已经出现了一些关于 覆盖率的信息
- package
- 类覆盖率
- 行覆盖率
- class
- 方法覆盖率
- 行覆盖率
- package
- Project 栏里的包树形图, 右侧已经出现了一些关于 覆盖率的信息
- 眼睑的同学, 已经有了新的发现
-
疑问
- 问题1: 我不想要这东西, 有办法吗?
- 当然有啦
- 路径
- ctrl + alt + f6
- Analyze > show coverage data
- 操作
- 勾选你想要显示 覆盖率的路径
- 然后确定
- 路径
- 当然有啦
- 问题1: 我不想要这东西, 有办法吗?
6. configuraion 配置
-
概述
- 覆盖率这个东西, 也是可以配置的
-
路径
- 打开 run configuration
- 找到你执行测试的那个 configuration
- 切换到 coverage tab
-
选项说明
- choose coverage runner
- 现在用 idea
- 讲 jacoco 的时候, 应该要换的
- sampling & tracing
- 模式
- 针对 idea 的选项
- 其他 runner, 只有 sampling
- sampling
- 简单模式
- 就是上面讲的东西
- 简单模式
- tracing
- 追踪模式
- 概述
- 会对 判定 做更细致的追踪
- 变化
- 后面会描述
- 概述
- 追踪模式
- 模式
- packages and classes to record coverage data
-
概述
- 追踪覆盖率的类
-
建议
- 最好勾选一下
- 如果默认的话, 所有的包都会出现在 coverage 那个窗口里
- 虽然没 覆盖率, 但是看着好烦的...
- 如果默认的话, 所有的包都会出现在 coverage 那个窗口里
- 最好勾选一下
-
- choose coverage runner
-
tracing 模式的变化
-
概述
- tracing 模式有所增强
-
增强内容
- 对 if 的判断, 有了增强
- 会统计 if 里 各个条件 真假执行次数
- 对 if 的判断, 有了增强
-
具体表现
- 单击 左侧的色块
- if 条件那行, 会有更加明确的信息
- 单击 左侧的色块
-
选项: track per test coverage
-
概述
- 追踪测试方法
-
回顾
- 之前色块的小弹窗里, 有个不可执行的灰色文件夹, 还记得吗?
-
勾选之后
- 单击那个 灰色文件夹
- 有新弹窗出现
- 内容是 执行这个代码的 测试方法
- 感觉是个 很不错的功能
- 单击那个 灰色文件夹
-
-
-
问题
- 尝试配置修改中, 我有过多次执行同一个 configuration
- 执行完后, 会有一个弹窗
- 看得我一脸懵逼
- 这玩意是什么鬼, 能设置吗?o
- 看得我一脸懵逼
- 当然能啦
- 执行完后, 会有一个弹窗
- 尝试配置修改中, 我有过多次执行同一个 configuration
7. settings 配置
-
概述
- settings 里的配置
-
路径
- 开始提到过的一个路径
- File > Settings > Build, Execution, Deployment > Coverage
- 开始提到过的一个路径
-
配置
-
when new coverage is gathered
-
概述
- 配置 新的覆盖率 是否聚合
-
选项
-
active coverage view
-
概述
- 展示 coverage 窗口
-
作用
- 执行 run test with coverage 时, 展示 coverage 窗口
-
这次一定要先讲下面这个...
- 首先要窗口出现, 才能出发后面的东西吧
-
-
一个 radio
-
选项
- show options before applying coverage to the editor
- 已经弹出 coverage 视图后, 再次执行, 会弹出一个 选项框
- 询问的选项, 就是下面三种
- 已经弹出 coverage 视图后, 再次执行, 会弹出一个 选项框
- do not apply collected coverage
- 丢弃 这次的 代码覆盖率结果
- replace active suites with the new one
- 丢弃 上次的 代码覆盖率结果
- 将 这次的 代码覆盖率结果, 填充到 coverage 窗口
- add to the active suites
- 保留 上次的 代码覆盖率结果
- 将 这次的 代码覆盖率结果, 叠加到 coverage 窗口
- show options before applying coverage to the editor
-
问题
- 大部分时候都好用, 但是碰到过几次失灵的情况
- 直接用了 选项3
- 问题需要我 确认
- 大部分时候都好用, 但是碰到过几次失灵的情况
-
-
-
-
java coverage
-
选项
- 不统计 普通类 的默认构造函数
- 统计也没啥意义
- 不统计 工具类 的私有构造函数
- 工具类不需要实例化
- 所以通常做一个 私有构造, 防止有开发把这个类实例化
- 工具类不需要实例化
- 不统计 普通类 的默认构造函数
-
解释
- 这来选项我就翻译一下, 意义就不解释了, 大家应该都懂
-
-
ps
-
ref
- Code coverage
- 官方文档
- 就这一个吧, 其他的基本是自己边尝试边整理
- 官方文档
- Code coverage
-
后续
- jacoco
- ide
- maven
- jenkins
- jacoco
-
为啥不直接讲 jacoco
- jacoco 其实有点复杂
- 数据
- 配置
- idea 简单好理解
- 两者有些东西, 本质上是相通的
- 理解了简单的 idea, 后面依葫芦画瓢, 学习曲线会更加平滑
- jacoco 其实有点复杂
-
遗漏
- 生成的结果报表
- 这个不太难, 基本都能看懂
- 生成的结果报表
来源:oschina
链接:https://my.oschina.net/u/4418846/blog/3341969