【问题标题】:Code coverage - eliminating false positives代码覆盖率——消除误报
【发布时间】:2013-07-10 15:43:18
【问题描述】:

我正在使用 istanbul(通过 grunt、jasmine 和 phantomJS)为我的单元测试生成代码覆盖率报告。我得到了我所说的误报,这些模块具有我正在测试的模块作为调用其方法的依赖项的模块,即

module1.js 加载 module2.js 作为依赖项。 module1 的单元测试调用module1.method,而后者又调用module2.method。当我查看代码覆盖率报告时,module2.method 以绿色突出显示,即使没有对其进行测试。

这是我应该关注的事情,我该如何避免?

【问题讨论】:

    标签: javascript unit-testing code-coverage jasmine gruntjs


    【解决方案1】:

    我创建了这个繁重的任务来帮助识别他们自己的测试套件未明确涵盖的文件

    grunt.registerTask('missingSpecs', 'Missing specs list', function (env, limit) {
        var specs = getFileList(getSpecs(env)),
            src = getFileList(getSrc(env)),
            missingSpecs = [];
    
        for (var file in src) {
            if (specs.indexOf(src[file]) === -1) {
                missingSpecs.push(src[file]);
            }
        }
        if (missingSpecs.length) {
            console.log(
                '\n******************************************************************************************************\n' +
                '*** The following common js files aren\'t covered by any tests. They won\'t write themselves, y\'know ***\n' +
                '******************************************************************************************************\n'
                );
            missingSpecs.sort(function () {
                return Math.random() - 0.5;
            }).slice(0,limit).forEach(function (file) {
                console.log(file);
            });
        }
    
    })
    

    getFileList 使用 grunt.file.expand 和一些正则表达式来获取模块名称列表。

    【讨论】:

      【解决方案2】:

      我也注意到了这一点,但我认为这是正确的行为。代码覆盖率仅意味着代码在测试期间执行。并不是说代码是断言的一部分。

      【讨论】:

        猜你喜欢
        • 2018-05-29
        • 2015-03-01
        • 2019-04-24
        • 2014-08-21
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多