陈斌彬的技术博客

Stay foolish,stay hungry

代码覆盖率工具-Istanbul

测试的时候,我们常常关心,是否所有代码都测试到了。 这个指标就叫做"代码覆盖率“(code coverage)。它有四个测量维度。

  • 行覆盖率(line coverage):是否每一行都执行了?
  • 函数覆盖率(function coverage):是否每个函数都调用了?
  • 分支覆盖率(branch coverage):是否每个if代码块都执行了?
  • 语句覆盖率(statement coverage):是否每个语句都执行了?

一、安装

Istanbul 是一个 npm 模块,安装非常简单,就一行命令。

$ npm install -g istanbul

二、覆盖率测试

来看一个例子,怎么使用 Istanbul 。下面是脚本文件 simple.js 。

var a = 1;
var b = 1;
if ((a + b) > 2) {
  console.log('more than two');
}

使用 istanbul cover 命令,就能得到覆盖率。

img

返回结果显示,simple.js 有4个语句(statement),执行了3个;有2个分支(branch),执行了1个;有0个函数,调用了0个;有4行代码,执行了3行。

这条命令同时还生成了一个 coverage 子目录,其中的 coverage.json 文件包含覆盖率的原始数据,coverage/lcov-report 是可以在浏览器打开的覆盖率报告,其中有详细信息,到底哪些代码没有覆盖到。 img

参考