首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用组合JavaScript文件+ Chutzpah/Blanket.js获得准确的代码覆盖率统计数据

使用组合JavaScript文件+ Chutzpah/Blanket.js获得准确的代码覆盖率统计数据
EN

Stack Overflow用户
提问于 2015-07-29 19:57:30
回答 1查看 1.1K关注 0票数 0

我有一个TypeScript项目,它使用Visual的“将JavaScript输出合并到文件”选项来创建一个包含所有应用程序代码(不包括库)的.js文件。我使用Chutzpah测试适配器来集成和运行茉莉花单元测试。如果我在没有测试的情况下运行代码覆盖率分析,则该工具报告的测试覆盖率为23%:

是什么导致了这个膨胀的统计数据?

我目前的理论是,当Chutzpah运行我的代码(app.js)以定义测试中使用的所有类时,blanket.js (这是Chutzpah在幕后用来获取代码覆盖率统计信息)会看到这些行正在运行,并将它们算作“覆盖行”。

是否有一种方法只包括在测试期间命中的行(为安装目的而不是在测试之前),以达到最终的代码覆盖率统计?还是这个膨胀的数字是由其他原因造成的呢?

这是我的chutzpah.json

代码语言:javascript
复制
{
    "Compile": {
        "Extensions": [ ".ts" ],
        "ExtensionsWithNoOutput": [ ".d.ts" ],
        "Mode": "External"
    },
    "References": [
        { "Path": "initialize.js" },
        { "Path": "./MyApp/lib/jquery-1.11.2.min.js" },
        { "Path": "./MyApp/lib/jquery-ui.min.js" },
        { "Path": "./MyApp/lib/knockout-3.3.0.js" },

        /* other references here.... */

        { "Path": "./MyApp/app.js" }
    ],
    "Tests": [
        { "Includes": [ "**/*.ts" ], "Excludes": [ "**/*.d.ts" ] }
    ],
    "CodeCoverageIncludes": [ "*app.js*" ],
    "TestFileTimeout": 100000
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-30 07:20:50

TypeScript生成合理数量的立即调用的函数表达式。这些文件一旦加载就会运行,这意味着无论发生什么,它们都会被覆盖。如果您没有得到错误,那么22%的代码可以工作--不需要为此编写任何测试。

在C#或Java中,这种情况不会发生,因为如果没有实例化类,类将包含0--但在TypeScript中,为模块和类生成的一些代码将在加载文件时运行。

下面是这个类可能包含的行的指示:

代码语言:javascript
复制
class Example {
    doSomeWork() {
        return 50;
    }
}

覆盖范围:

代码语言:javascript
复制
✓ var Example = (function () {
✓    function Example() {
✓    }
✓    Example.prototype.doSomeWork = function () {
✗       return 50;
✓    };
✓    return Example;
✓ })();

正如您所看到的,有很多东西可以通过加载文件来“运行”。实际行为(返回值的函数)不包括在内。

我将以类似于普通对象上的属性的方式对这些代码行进行分类--您可能不想编写一个特定的测试来覆盖它们--但是它们会自然地被覆盖。

你不能为此调整你的报告,但只需说你应该对78%而不是22%感兴趣。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31709963

复制
相关文章

相似问题

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