karma 的插件 karma-coverage 提供了测试代码覆盖率的支持。

karma 的页面:http://karma-runner.github.io/0.8/config/coverage.html 进行了说明。karma 使用 Istanbul.实现覆盖率统计。

首先你需要安装这个 Karma 插件,然后需要在配置文件的三个地方进行配置。

安装 karma-coverage

当然了,你必须安装这个组件才能完成覆盖率统计。可以看到,在安装这个插件的时候,已经安装了 Istanbul 。

npm i -D karma-coverage
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
└─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
│ └── [email protected]
└── [email protected]

配置

涉及三个配置信息,两个是必须的,一个是可选的。

配置预处理器

这里配置哪些文件需要统计测试覆盖率,例如,如果你的所有代码文件都在 lib 文件夹中,你就需要如下配置。

preprocessors = {
'**/lib/*.js': 'coverage'
};

注意不要包含你所依赖的库,测试文件等等,下面就是一个错误的配置信息。

files = [
JASMINE,
JASMINE_ADAPTER,
'lib/*.js',
'test/*.js'
];
preprocessors = {
'**/*.js': 'coverage'
};

配置报告

在配置文件中包含下面的信息来激活覆盖率报告器。

reporters = ['coverage'];

这样将会对每个浏览器创建一个覆盖率报告,另外,它还会创建一个 Json 文件,其中包含输出的中间数据。

配置报告选项

默认的报告格式如下:

coverageReporter = {
type : 'html',
dir : 'coverage/'
}

type 是一个字符串值,取值可以是:

  • html (default)
  • lcov (lcov and html)
  • lcovonly
  • text
  • text-summary
  • cobertura (xml format supported by Jenkins)

dir 则用来配置报告的输出目录。如果是一个相对路径的话,将相对与 basePath 参数。

如果类型是 text 或者 text-summary,你可以配置 file 参数来指定保存的文件名。

coverageReporter = {
type : 'text',
dir : 'coverage/',
file : 'coverage.txt'
}

如果没有文件名,就会输出到控制台。

04-30 23:59