簡體   English   中英

單元測試中的代碼覆蓋率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM