单元测试覆盖率
测试的时候,我们常常关心,是否所有代码都测试到了。 这个指标就叫做"代码覆盖率"(code coverage)。
它有四个测量维度:
- 行覆盖率(line coverage):是否每一行都执行了?
- 函数覆盖率(function coverage):是否每个函数都调用了?
- 分支覆盖率(branch coverage):是否每个if代码块都执行了?
- 语句覆盖率(statement coverage):是否每个语句都执行了?
常用的前端js测试覆盖率框架: istanbul
我们代码使用ES6来编写的,使用babel来转码,所以选择了另一个专门针对es6的babel转码工具 isparta
安装:
$ npm install --save-dev isparta
使用:
babel-node node_modules/isparta/bin/isparta cover --report text --report html node_modules/mocha/bin/_mocha -- --reporter dot
examples:
package.json -> script
中添加:
"test": "NODE_ENV=test mocha --recursive --compilers js:babel-core/register --require ./test/setup.js",
"test-cov": "babel-node ./node_modules/isparta/bin/isparta cover --report text --report html ./node_modules/mocha/bin/_mocha -- --reporter dot --require ./test/setup.js"
单独执行test: npm run test
执行测试和覆盖率: npm run test-cov
生成报告
isparta使用istanbul来生成报告,所以参数也是istabul的参数: --report htm/json/lcov/cobertura/clover/teamcity/text-lcov/json-summary/text-summary