两分钟全面了解Jacoco
本文主要详细介绍在IntelliJ IDE中执行测试并展示覆盖情况
本文IntelliJ IDE版本为2020.1
-
插件安装
安装Coverage插件,通过插件可以在IDE中展示被测代码的覆盖情况,配置路径为IntelliJ IDE -> Preferences -> Plugins,搜索Coverage并安装
安装后就可以点击测试用例运行时选择Run with Coverage,或者右键测试类选择Run with Coverage
-
插件配置
配置路径 IntelliJ IDE -> Preferences -> Build,Execution,Deployment -> Coverage
-
何时触发收集覆盖率
Show options before applying coverage to the editor: 在每次运行测试用例后都会弹框提示如下:
Do not apply collected coverage: 不计算覆盖率.
Replace active suites with the new one: 计算覆盖率并替换之前的覆盖率,并在覆盖率窗口展示
Add to the active suites: 计算覆盖率,并将覆盖率结果叠加到覆盖率窗口展示
Activate Coverage View: 每次运行覆盖率自动弹出覆盖率窗口 -
覆盖率计算配置
Ignore implicit constructors: 覆盖率统计中去除默认构造函数.
Ignore empty private constructors of utility classes: 对于所有方法都为static方法的工具类,其隐藏的空的私有构造函数不计入覆盖率统计 -
覆盖代码颜色配置
配置路径:IntelliJ IDE -> Preference -> Editor -> Color Schema -> General -> Line Coverage,可以配置行未覆盖、部分覆盖、全覆盖三种行覆盖率情况的颜色
-
-
覆盖率运行配置
覆盖率插件启动Runner来统计覆盖率,三种覆盖率运行器:- IntelliJ IDE:
Sampling mode 可以快速收集覆盖率,对运行时长影响忽略不计;
Tracing mode 可以准确的收集分支覆盖率,可以看到具体的覆盖率信息
Track per test coverage 可以详细的查看覆盖该行代码的测试case
- Jacoco: 可以提供多种覆盖率,推荐
- Emma: 不再维护了,并且当运行在java7时需要关闭框架校验模式,不推荐使用
Enable Coverage in Test Folders:覆盖率统计包括测试代码,一般不需要开启
- IntelliJ IDE:
-
运行
Run With Coverage后,会在覆盖率窗口和项目目录展示覆盖率: -
查看覆盖率
test suite:代表一组测试用例的集合,每次运行测试都会产生一个testsuite,在idea(mac os)中会默认存放在~/Library/Caches/JetBrains/IntelliJIdea2020.1/coverage中(.ic文件)。通过Run -> Show Code Coverage Data 来选择要查看的覆盖率suite,也可以导入其它构建产生的覆盖率suite文件。
注:idea产生的.ic文件只能在IDE中查看当前工程的.ic文件
-
保存报告
可以在报告工具栏窗口导出html格式的覆盖率报告