Nic*_*ker 5 jasmine chutzpah typescript azure-devops
我们有一个用 TypeScript 编写的 AngularJS 应用程序的 Visual Studio 2013 解决方案。Jasmine 单元测试有一个单独的测试项目,也是用 TypeScript 编写的。
我们遇到的问题是找到一个构建/Chutzpah 配置,它允许我们通过 Chutzpah 测试适配器在开发机器上运行测试,并且作为我们在 Visual Studio Team Services 上构建的 CI 的一部分。
当我们在开发机器上运行测试时,似乎默认情况下测试在源代码树中运行,因此对 .d.ts 和应用程序 .ts 文件的依赖关系是相对于源目录设置的。到现在为止还挺好。但是,当我们运行 Visual Studio Team Services 构建(按照此博客文章进行设置)时,测试似乎在 bin 目录中运行(查看 Visual Studio Team Services 日志)。这意味着依赖项的引用是错误的,因此测试失败,因为它们找不到所需的 .d.ts 或应用程序 .ts 文件。
到目前为止,我们找到的最佳解决方案是:
然后我们可以通过两种方式在 VS 中运行测试:
我们还尝试将 JS 输出重定向到 bin 目录,这在 VS 中工作正常,但是由于某种原因,VS Team Services 构建无法复制 .js 文件。
理想情况下,我们希望:
我不知道这个答案是否仍然与您相关,但对其他人也有用。让我们从 TypeScript 和 Team Services 开始。理想情况下,您只希望将 TypeScript 文件签入 Team Services。Team Services 需要将 TypeScript 构建为 JavaScript,只需添加相应项目的 Visual Studio 构建步骤即可轻松实现。请注意,包含 TypeScript 的项目还在其 csproj 文件中获得了其他 TypeScript 设置。这也适用于您的单元测试。您应该在 Team Services 中将单元测试构建为常规 JavaScript。
您要做的第二件事是正确设置测试环境。这意味着您必须下载 2 个扩展,即Chutzpah Test Adapter和Chutzpah Test Runner。这些扩展允许您运行(带有代码覆盖率)和调试单元测试。Chutzpah 使用PhantomJS作为内存浏览器来运行单元测试。这些扩展与团队服务无关。这些扩展仅适用于您的本地开发环境。嗯,这是一个问题。我们可以通过安装Chutzpah NuGet 包来解决这个问题。此 NuGet 包将所有依赖项下载到您的包文件夹中,这意味着它会下载 PhantomJS,而且还会下载 QUnit、Jasmine 和代码覆盖率库。这意味着您不必再在项目中引用它们。只需从您的项目中删除它们即可。然后你可以添加chutzpah.json配置文件。在该文件中,您可以设置测试框架(jasmine、qunit 等)以及单元测试的引用文件。还有应该排除代码覆盖率的文件,主要是 jQuery 和 Angular 等库。完成后,您应该仍然能够在开发环境中运行单元测试,到目前为止一切顺利。我们没有在 Team Services 中为单元测试设置任何内容。
嗯,这就是最后一部分。在您的构建流程中,您应该添加一个额外的步骤来进行 JavaScript 单元测试。您无法将其与 .NET 单元测试合并,因为使用了不同的适配器,并且其他程序集也被引用为测试程序集。在该构建步骤中,您必须定义 3 件事,即测试程序集、VS 测试版本和自定义测试适配器的路径。您应该插入以下值:
所有以 .tests.js 结尾的文件都被标记为测试文件。
只有 Team Services 的最新测试版本支持新的测试适配器。
这是 NuGet 包下载到的文件夹。Chutzpah Test 适配器位于此文件夹的子文件夹中。
嗯,就是这样,希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |