[英]Code coverage in unit tests
我試圖得到我的單元測試沒有涵蓋的代碼行。
我用mocha進行單元測試,它提供了一個記者“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,hits,miss和coverage都是0?
我也嘗試使用節點require
而不是jscs,但沒有成功。
編輯:我只是嘗試了mocha -R json-cov test.js --coverage
,如果我使用jscs require
導致錯誤。 當我使用節點require
的結果是一樣的上面。
編輯:我甚至無法從控制台運行jscoverage。 我創建了一個文件夾foo和foo-cov,並將我的foo.js復制到文件夾foo中。 然后我運行了jscoverage foo foo-cov
,它給了我一個錯誤的abs source path or abs dest path needed!
。 我還嘗試了絕對路徑和其他一些方法來安排參數。 沒有成功。 如何為jscoverage准備文件?
編輯:如果它有任何相關性,我使用的是Windows。
編輯:剛剛意識到通過npm不僅有一個'jscoverage'包,而且還有一個'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”選項來編輯mocha的jade模板,如下所示:
jscoverage --no-highlight foo foo-cov
按照我的編輯,看看我做了什么來解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.