我试图决定JS测试代码覆盖率工具,但无法清楚地看到它们之间的差异.谷歌的热门歌曲是blanket.js,istanbul-js和JSCover.
任何人都可以提供有关它们与优点/缺点之间关键差异的任何信息吗?
还有其他有用的吗?
我正在使用Node中的Jasmine以编程方式测试一些代码.为此,我设置了以下内容:
function runTests() {
var Jasmine = require('jasmine');
var jasmine = new Jasmine();
jasmine.loadConfig({
spec_dir: 'unit-tests',
spec_files: [
'tests-*.js'
]
});
var blanket = require('blanket')();
var TerminalReporter = require('jasmine-terminal-reporter');
var reporter = new TerminalReporter({});
jasmine.addReporter(reporter);
jasmine.execute();
}
runTests();
Run Code Online (Sandbox Code Playgroud)
当这些测试运行时,我想获得代码覆盖的详细信息.在尝试这个时,我偶然发现了blanket.js.我的问题是,如何以编程方式输出代码覆盖率结果?使用上面的代码,我收到一个错误.错误只是说:
Error: Bad file instrument indicator. Must be a string, regex, function, or array.
Run Code Online (Sandbox Code Playgroud)
为什么?我究竟做错了什么?
更新
在我的package.son文件中,我有以下部分:
"config": {
"blanket": {
"data-cover-flags": {
"engineOnly":true
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已将我的runTests
功能更新为如下所示:
function runTests() {
var Jasmine = require('jasmine');
var jasmine = …
Run Code Online (Sandbox Code Playgroud) 有没有人设法使用Ember CLI项目获得代码覆盖率?
我已经尝试使用blanket.js和伊斯坦布尔,因为有其他在这里,这里和这里,也没有用任何的成功.我设法让每个人实际生成一份报道报告,但报告要么说是0%(伊斯坦布尔),要么是100%(blanket.js),目前的测试无法提供100%的覆盖率.
Ember CLI生成的构建项目JavaScript文件包含项目的所有源文件,每个文件的内容都输出到一行,有时是大量的行.因此,即使覆盖工具能够为构建文件中的代码生成实际覆盖度量指标,也存在查看结果的问题.上帝只知道如何将其链接回原始源文件?
Ember CLI很棒,看起来很受欢迎,所以我很惊讶更多的人没有遇到这个问题.也许其他人不会受到代码覆盖的困扰,或者大多数人只是让它在没有问题的情况下工作,而我却错过了一些东西.
我一直在测试Jasmine 2.0.0,它没有任何问题.但是当我将BlanketJS附加到我的代码时会出现问题.
我用了一个specRunner(https://github.com/alex-seville/blanket/blob/master/test/jasmine-requirejs/runner.html与茉莉花1.3.1工程).但是当我用Jasmine 2.0.0替换Jasmine 1.3.1时,它不起作用,
这是BlanketJS repo的原始代码:
<html>
<head>
<title>Jasmine Spec Runner</title>
<link rel="stylesheet" type="text/css" href="../vendor/jasmine.css">
<script type="text/javascript" src="../vendor/jasmine.js"></script>
<script type="text/javascript" src="../vendor/jasmine-html.js"></script>
<script type="text/javascript" src="../helpers/console_runner.js"></script>
<script type="text/javascript" src="../../node_modules/requirejs/require.js"></script>
<script type="text/javascript" data-cover-only="code/" data-cover-never="['all.tests','code/tests']"
src="../../dist/qunit/blanket.js"> </script>
<script type="text/javascript" src="../../src/adapters/jasmine-blanket.js"></script>
<script type="text/javascript">
if (window.require && typeof (window.require.config) === 'function') {
require.config({
baseUrl: './code'
});
}
</script>
<script type="text/javascript" src="code/all.tests.jasmine.js"></script>
<script type="text/javascript">
(function () {
window.blanketTestJasmineExpected=2;
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
var oldResult = htmlReporter.reportRunnerResults; …
Run Code Online (Sandbox Code Playgroud) 我想在MOCHA JS测试中获得代码覆盖率.我正在使用毯子,但我得到0%的覆盖率0 SLOC为什么我不理解.我的package.json是
{
"name": "basics",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha && mocha test --require blanket --reporter html-cov > coverage.html"
},
"author": "",
"license": "MIT",
"devDependencies": {
"chai": "~2.2.0",
"mocha": "~2.2.4",
"blanket": "~1.1.6",
},
"config": {
"blanket": {
"pattern": ["index.js"],
"data-cover-never": "node_modules"
}
}
}
Run Code Online (Sandbox Code Playgroud)
和index.js是
exports.sanitize = function(word){
return word.toLowerCase().replace(/-/g, ' ');
}
exports.testToString = function(){
return word.toLowerCase().replace(/-/g, ' ');
}
Run Code Online (Sandbox Code Playgroud)
和indexSpec.js在测试文件夹下
var chai = require('chai');
var expect = require('chai').expect;
var word = require('../index.js'); …
Run Code Online (Sandbox Code Playgroud) 我有基于node.js的项目,也包括客户端代码.我有2个独立的单元测试套件,1个用于前端,1个用于后端.我目前有摩卡运行使用毯子进行代码覆盖,并将结果传递到工作服模块,如下所示:
mocha --require blanket --reporter mocha-lcov-reporter server/test/unit | ./node_modules/.bin/coveralls
Run Code Online (Sandbox Code Playgroud)
我基本上需要结合这两个测试运行(服务器和客户端)的输出:
mocha --require blanket --reporter mocha-lcov-reporter server/test/unit
Run Code Online (Sandbox Code Playgroud)
和
mocha --require blanket --reporter mocha-lcov-reporter client/test/unit
Run Code Online (Sandbox Code Playgroud)
和管道进入工作服模块.
这可能吗?我该怎么做?
我正在尝试建立一个连续集成环境(使用快速构建),其中在每次提交到git分支时,我想运行我们的测试套件,检查代码覆盖率并恢复提交,如果测试失败或代码覆盖率低于某个阈.特别是我想确保我正在检查的代码是100%测试的.我们的测试套件已经使用grunt和mocha-hack设置,我们使用grunt-mocha-cov进行覆盖.但是grunt-mocha-cov可以检测整个源代码.我只想要git差异进行检测.有没有办法做到这一点?
我无法使用blanket.js测试覆盖率来使用qunit,尽管很多尝试重新配置并尝试调用调试,但实际上没有任何反应.
这些是我试图遵循的文档说明 - https://github.com/alex-seville/blanket/blob/master/docs/getting_started_browser.md#getting-started-guide-browser-version
这是我的试运行员
<!doctype html>
<html>
<head>
<meta charset='UTF-8' />
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
<title>bootstrap-treeview.js Tests</title>
<link rel='stylesheet' href='./lib/qunit-1.12.0.css'>
<script src='./lib/jquery.js'></script>
<script src='./lib/qunit-1.12.0.js'></script>
<script data-cover-flags="debug" src="./lib/blanket.min.js"></script>
<script data-cover src='./lib/bootstrap-treeview.min.js'></script>
<script src='./tests.js'></script>
</head>
<body>
<div id="qunit"></div>
<div id='qunit-fixture'>
<div id="treeview"></div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我必须遗漏一些基本的东西,没有控制台错误,没有任何东西.我的报告运行正常,qunit报告像往常一样显示,但没有添加毯子.尽管添加了data-cover-flags ="debug",但没有生成额外的覆盖率报告,也没有调试.
任何帮助,方向,非常感谢?
blanket.js ×8
javascript ×5
mocha.js ×3
istanbul ×2
jasmine ×2
node.js ×2
unit-testing ×2
chai ×1
coveralls ×1
ember-cli ×1
git ×1
gruntjs ×1
qunit ×1
requirejs ×1
testing ×1