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