网站搜索

性能问题 - Chutzpah Console.exe 和 TypeScript


我在尝试使用我的 chutzpah.json 文件运行 chutzpah.console.exe 时遇到了一些性能问题。对于这个项目,我使用 TypeScript 并在运行测试之前将 TypeScript 文件预编译成 .js 文件。我拥有的每个测试文件通常都会引用它依赖的另一个 TypeScript 文件——这是为了让 Visual Studio 工作正常,并且让 Chutzpah 扩展能正常运行。例如,我的 drawerBusiness.spec.ts 文件包含以下引用:

/// <reference path="../../../../app/business/documents/drawerBusiness.ts"/>

我的 chutzpah.json 文件如下:

{
  "Compile": {
    "Mode": "External",
    "Extensions": [ ".ts" ],
    "ExtensionsWithNoOutput": [ ".d.ts" ]
  },
  "Framework": "jasmine",
  "TestHarnessReferenceMode": "Normal",
  "TestHarnessLocationMode": "SettingsFileAdjacent",
  "References": [
    { "Path": "./lib/jquery/jquery.js" },
    { "Path": "./lib/angular/angular.js" },
    { "Path": "./lib/angular-mocks/angular-mocks.js" },
    { "Path": "./lib/jasmine-jquery/jasmine-jquery.js" },
    { "Path": "./lib/underscore/underscore.js" },
    { "Path": "./lib/angular-bootstrap/ui-bootstrap-tpls.js" },
    { "Path": "./tests/dependencies.js" }
  ],
  "Tests": [
    { "Include": "*/tests/specs/*.ts", "ExpandReferenceComments":  "true" }
  ]
}

如上所示,我需要加载一些外部库。我想这些库加载一次后,会在每个测试中使用,对吗?

当我使用纯 JavaScript 时,这个配置非常快。在 Visual Studio 中运行以及通过 chutzpah.console.exe 运行测试时,它都完成得相当快。然而,自从我切换到 Chutzpah 后,测试就慢了很多:

Tests complete: 263
=== 263 total, 0 failed, took 74.64 seconds ===

在我们的构建机器上,这些结果甚至更糟,并且它正在超时。看起来每个运行的规范文件之间有很大的延迟,我认为这导致了整体的缓慢——一旦规范文件开始运行,它会在几百分之一秒内完成。有人有什么想法可能是什么配置错误吗?

答案#1

这里有一些你可以尝试的方法,帮助弄清这个问题的原因:

  1. 你可以尝试在你的 chutzpah.json 文件中启用 "EnableTestFileBatching": true,看看是否有帮助吗?如果你有很多测试文件,可能会很慢,这个设置会告诉 chutzpah 将它们批量处理到一个测试框架中。

  2. 你能提供 /trace 选项的输出,这样我就可以看到所有的时间吗?

  3. 你能提供一个我可以本地运行的重现示例吗?