代码覆盖率在unit testing

我试图得到我的unit testing不包括的代码行。

我用摩卡进行unit testing,它提供了一个记者“json-cov”,它应该报告我没有执行的行数。

我有两个文件,第一个(foo.js):

module.exports = function () { for (var result = 0, i = 0; i < arguments.length; i++) { result += arguments[i]; } return result; } 

和第二个(test.js):

 var expect = require('expect.js'), jsc = require('jscoverage'), //foo = require('./foo.js'); foo = jsc.require(module, './foo.js'); describe('foo', function () { it('should add all arguments', function () { expect(foo(1,1)).to.be(2); }); }); 

当我运行mocha -R json-cov test.js我得到以下结果:

 { "instrumentation": "node-jscoverage", "sloc": 0, "hits": 0, "misses": 0, "coverage": 0, "files": [], "stats": { "suites": 1, "tests": 1, "passes": 1, "pending": 0, "failures": 0, "start": "2013-01-30T18:00:15.785Z", "end": "2013-01-30T18:00:15.787Z", "duration": 2 }, "tests": [ { "title": "should add all arguments", "fullTitle": "foo should add all arguments", "duration": 1 } ], "failures": [], "passes": [ { "title": "should add all arguments", "fullTitle": "foo should add all arguments", "duration": 1 } ] } 

我做错了什么,所以sloc,命中,错过和覆盖面是0?

我也尝试使用节点而不是jscs,而没有成功。

编辑:我只是尝试mocha -R json-cov test.js --coverage如果我使用jscs require导致一个错误。 当我使用节点时, require结果与上面相同。

编辑:我甚至不能从控制台运行jscoverage。 我创build了一个文件夹foo和foo-cov,并将foo.js复制到了foo文件夹中。 然后我运行jscoverage foo foo-cov ,它给了我一个错误的abs source path or abs dest path needed! 。 我也尝试了绝对path和其他一些方法来安排论据。 没有成功。 我如何准备jscoverage的文件?

编辑:如果它有任何相关性,我正在使用Windows。

编辑:只是意识到,不仅有一个'jscoverage'包可通过npm,而且还有'visionmedia-jscoverage'。 试图安装那个失败。 可能是因为Windows与Linux。

编辑:得到它的工作。 现在我只需从控制台运行jscoverage.exe(从这里下载),然后使用mocha -R html-cov test.js > coverage.html ,而不是使用节点包来准备代码。 现在我有一些代码被转义的问题。 所以我明白了

 <span class="k">var</span> foo <span class="k">=</span> <span class="k">{</span> 

代替

 var foo = { 

突出显示。

编辑:标签被转义,因为它们通过这个代码的玉模板呈现: td.source= line.source

改变这个td.source!= line.source修复了我最后一个问题。

通过使用jscoverage的“–no-highlight”选项,可以解决转义码问题,而无需编辑摩卡的玉石模板,如下所示:

 jscoverage --no-highlight foo foo-cov 

按照我的编辑,看看我做了什么来解决这个问题。