- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 TypeScript 项目,它使用 Visual Studio 的“将 JavaScript 输出合并到文件中”选项来创建一个包含我的所有应用程序代码(不包括库)的 .js
文件。我正在使用Chutzpah Test Adapter集成并运行 Jasmine 单元测试。如果我在没有测试的情况下运行代码覆盖率分析,该工具会报告我的测试覆盖率是 23%:
是什么导致了这一夸大的统计数据?
我当前的理论是,当 Chutzpah 运行我的代码 (app.js
) 以便定义测试中使用的所有类时,blanket.js (Chutzpah 在后台使用它来获取代码覆盖率统计信息)看到这些行正在运行并将它们计为“覆盖行”。
是否有一种方法可以仅将测试期间(而不是测试之前,出于设置目的)命中的行包含在最终的代码覆盖率统计中?或者这个夸大的数字是由其他原因造成的?
这是我的 chutzpah.json
:
{
"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
}
最佳答案
TypeScript 生成合理数量的立即调用函数表达式。事实上,它们在文件加载后立即运行,这意味着无论如何它们都会被覆盖。如果您没有收到错误,则表明 22% 的代码可以工作 - 无需为此编写任何测试。
在 C# 或 Java 中,这种情况不会发生,因为如果您没有实例化一个类,它的覆盖率将为 0 - 但在 TypeScript 中,为模块和类生成的一些代码将在您加载文件时运行。
以下是本类(class)可能涵盖的线路的指示:
class Example {
doSomeWork() {
return 50;
}
}
覆盖范围:
✓ var Example = (function () {
✓ function Example() {
✓ }
✓ Example.prototype.doSomeWork = function () {
✗ return 50;
✓ };
✓ return Example;
✓ })();
正如您所看到的,有很多东西只需加载文件就可以“运行”。未涵盖实际行为(返回值的函数)。
我会以与普通对象上的属性类似的方式对这些代码行进行分类 - 您不会想编写特定的测试来覆盖它们 - 但它们会自然地被覆盖。
您无法真正为此调整您的报告,但足以说明您应该对 78% 而不是 22% 感兴趣。
关于javascript - 使用组合 JavaScript 文件 + Chutzpah/Blanket.js 获取准确的代码覆盖率统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31709963/
当我提供 Chutzpah.json 文件时,我无法让 Chutzpah 运行我的 typescript 测试。 我的项目是这样的: 我的 Chutzpah.json 文件如下所示: { "C
我们想使用 chutzpah(VS 扩展)通过 MSBuild(在 TFS 构建中)运行我们的 Jasmine 测试。所以我试图在本地计算机上的某个地方找到 chutzpah.console.exe(
我使用带有 Chutzpah 的 Visual Studio 2015 Enterprise 来测试我的 javascript 代码。我不断收到以下错误。 parallel设置成1还是8都没关系,报错
我已经编写了 QUnit 测试,并使用 Test Explorer 的 Chutzpah 测试适配器在 Visual Studio 2012 中运行它们。当我运行代码覆盖率时,需要某些外部依赖项(例如
我在 Visual Studio 2012、Chutzpah 3.2.1.1 和 Jasmine 2 中使用 TypeScript 1.0。 我有一个非常基本的测试,可以很好地编译,但没有通过使用 V
我一直在试图找出在 Visual Studio 中编写/运行自动 jasmine 测试的最佳方法是什么。目前,我正在将 jasmine 与 Resharper(使用 PhantomJS)一起使用,并且
相当简单——我可以通过命令行工具或其他方式使用 Chutzpah JavaScript 测试运行程序运行单个测试吗? 最佳答案 Chutzpah 将始终运行整个测试文件,而不是单个测试。我想过提供一种
我刚刚安装了 Chutzpah 来为 Javascript 运行基于 Jasmine 的单元测试。我是 Jasmine 以及 Chutzpah 和 angular 的新手。我已经为 Angular 过
我想为我的 QUnit javascript 单元测试生成一个 junit、nunit 或 mstest 报告,因为我们主要在 Visual Studio(c# MVC 服务器)中开发,我们目前正在使
如何从项目中删除 Chutzpah 以不在测试资源管理器中显示结果? 我制作了一个演示项目来学习 Chutzpah 并为 VS2013 安装了它。现在在我的另一个项目中,我不使用 Chutzpah 而
我有一个测试在浏览器中正常通过但在 Chutzpah 中失败。 这是失败的部分: var nameLowerCase = person.PersonName.toLowerCase(); var se
我的团队正在尝试将 Chutzpah 集成到 TFS 2012 构建过程中。我们使用了 this blog post作为我们的起点。 在高层次上,实际问题是构建代理上下文中的 Visual Studi
我有一些 qunit 测试设置来测试我广泛使用 requirejs 的代码。我使用 Chutzpah 来执行在 VS 中运行的测试。如果我在浏览器中运行测试而不是仅在 VS 中运行测试,则一切正常。它
我们使用 Chutzpah 测试适配器在 Visual Studio 中运行一些 QUnit javascript 测试。一切都工作正常,直到我们最近更改了 api(由 js 文件测试的 API),并
Github 上关于 Compile 配置元素的 Chutzpah 文档。 This setting lets you describe in the Chutzpah.json file how t
我尝试使用 Chutzpah + jasmine 来测试我的 AngularJS 代码。 这是我引用的文件 jasmine.js ver:1.3.1 jasmine-html.js angular.m
我已经安装了 Chutzpah 并在我的计算机上运行了几次,然后我重新启动了,当我尝试从 Visual Studio 或 中的扩展运行时出现了这种错误命令: >chutzpah.console /wa
我已经安装了 Chutzpah 并在我的计算机上运行了几次,然后我重新启动了,当我尝试从 Visual Studio 或 中的扩展运行时出现了这种错误命令: >chutzpah.console /wa
我刚刚将 Chutzpah 测试适配器扩展安装到 VS2013,并通过 VS 的测试资源管理器运行了一个简单的 Jasmine 测试。效果很好 - headless 运行测试。 然后我尝试通过 Res
我完全卡住了:这是我的目录: chutzpah.json src/ --tests/ ----example-test.ts ----test.js //chutzpah.json { "Fr
我是一名优秀的程序员,十分优秀!