首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试中的代码覆盖率

单元测试中的代码覆盖率
EN

Stack Overflow用户
提问于 2013-01-30 18:07:20
回答 2查看 1.2K关注 0票数 1

我试图得到我的单元测试没有涵盖的代码行。

我用mocha做单元测试,它提供了一个记者"json-cov“,它应该报告有多少行我没有执行。

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

代码语言:javascript
复制
module.exports = function () {
    for (var result = 0, i = 0; i < arguments.length; i++) {
        result += arguments[i];
    }
    return result;
}

第二个(test.js):

代码语言:javascript
复制
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时,会得到以下结果:

代码语言:javascript
复制
{
  "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?

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

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

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

编辑:如果有任何关联,我使用的是。

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

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

代码语言:javascript
复制
<span class="k">var</span> foo <span class="k">=</span> <span class="k">{</span>

而不是

代码语言:javascript
复制
var foo = {

加高光。

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

将此更改为td.source!= line.source修复了最后一个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-01 10:15:00

跟着我的编辑看看我做了什么来解决这个问题。

票数 -1
EN

Stack Overflow用户

发布于 2013-05-27 10:06:22

可以不用编辑mocha的玉石模板就可以解决转义代码问题,只需使用jscoverage的“-no-亮点”选项,如下所示:

代码语言:javascript
复制
jscoverage --no-highlight foo foo-cov
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14610766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档