use*_*050 10 integration-testing code-coverage end-to-end angularjs protractor
我正在使用量角器在angularJS应用程序中运行一些e2e测试(如angularJS文档中所推荐的).我已经google了,无法找到有关如何测量量角器测试覆盖率的任何信息.
我想我在这里遗漏了什么...有没有办法获得量角器e2e测试的代码覆盖率报告?或者它只是单元测试的一个功能?
这可以通过伊斯坦布尔实现.这是一个过程,我从项目中提取了一些示例配置(未经过测试):
使用命令检测代码istanbul instrument.确保istanbul的覆盖变量是__coverage__.
// gulpfile.js
gulp.task('concat', function () {
gulp.src(PATH.src)
// Instrument for protractor-istanbul-plugin:
.pipe(istanbul({coverageVariable: '__coverage__'}))
.pipe(concat('scripts.js'))
.pipe(gulp.dest(PATH.dest))
});
Run Code Online (Sandbox Code Playgroud)使用plugin protractor-istanbul-plugin配置Protractor .
// spec-e2e.conf.js
var istanbulPlugin = require('protractor-istanbul-plugin');
exports.config = {
// [...]
plugins: [{ inline: istanbulPlugin }]
};
Run Code Online (Sandbox Code Playgroud)运行测试.
istanbul report.这种方法对我有用,并且很容易与单元测试的覆盖率报告相结合.为了实现自动化,我将步骤1放入我和脚本中的gulpfile.js步骤3和4 中,或多或少像这样:testposttestpackage.json
// In package.json:
"scripts": {
"test": "gulp concat && protractor tests/spec-e2e.conf.js",
"posttest": "istanbul report --include coverage/**/.json --dir reports/coverage cobertura"
},
Run Code Online (Sandbox Code Playgroud)
我设法让它工作,但目前它是一个黑客。我使用现有的 grunt istanbul 插件之一来检测代码。然后我制作了一个虚拟规范,它获取“覆盖率”全局变量并将其写入文件。之后,您可以使用任何报告插件创建报告。
(非常简单的)测试如下所示:
describe('Output the code coverage objects', function() {
it('should output the coverage object.', function() {
browser.driver.executeScript("return __coverage__;").then(function(val) {
fs.writeFileSync("/path/to/coverage.json", JSON.stringify(val));
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8339 次 |
| 最近记录: |