-
概述
-
使用 idea 自带的 code coverage 工具
-
背景
-
了解 白盒测试用例设计 和 测试覆盖率 之后, 大概就需要 实践 了
-
实践的话, 还是需要 工具 来检验效果
-
工具选取
-
选项
-
JaCoCo
-
IDEA Code Coverage
-
结果
-
两个都想试试
-
先看看 IDEA CC, 这个比较简单
-
JaCoCo 感觉更加复杂
-
指标
-
使用的场景都更加复杂
-
先讲 IDEA Code Coverage
-
简单
-
Idea 自带, 集成方便
1. 准备
-
理论基础
-
白盒测试用例设计
-
测试覆盖率
-
环境
-
os
-
win 10
-
ide
-
idea 2018.2
-
组件
-
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, 后面依葫芦画瓢, 学习曲线会更加平滑
-
遗漏
-
生成的结果报表
-
这个不太难, 基本都能看懂
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出