2014-10-27 102 views
4

我们有一个用TypeScript编写的AngularJS应用程序的Visual Studio 2013解决方案。 Jasmine单元测试还有一个单独的测试项目,也是用TypeScript编写的。用于在Visual Studio和Visual Studio Team Services中构建运行TypeScript测试的Chutzpah配置

我们遇到的问题是找到一个构建/ Chutzpah配置,它允许我们通过Chutzpah测试适配器在开发机器上运行测试,并且还作为我们在Visual Studio Team Services上构建CI的一部分。

当我们在开发机器上运行测试时,似乎默认情况下测试运行在源代码树中,因此相对于源目录设置了对.d.ts和application .ts文件的依赖关系。到现在为止还挺好。 但是,当我们运行Visual Studio Team Services构建(设置为this blog post)时,测试似乎在bin目录中运行(查看Visual Studio Team Services日志)。这意味着依赖项的引用是错误的,所以测试失败,因为他们找不到所需的.d.ts或应用程序.ts文件。

这个最好的解决办法,到目前为止,我们发现的是:

  • 有无Chutzpah.json设置为“始终复制”,所以其复制到bin目录
  • 是否所有测试.ts文件设置为TypeScriptCompile /复制始终
  • 是否所有测试.d.ts文件设置为内​​容/始终复制(如 jasmine.d.ts)
  • 有在设置为 TypeScriptCompile /复制始终
  • 应用项目的所有.ts文件
  • 更新测试文件依赖性包括额外 chutzpah_reference这将是bin目录正确的(使用 chutzpah_reference指VS本地版本将仍然完整 没有错误)

然后我们就可以运行在VS测试中方法有两种:

  1. 从VS测试运行正常
  2. 通过显示所有文件,找到的bin /目录下的测试,并右键单击 和“运行JS测试”(这是一个相当感伤d指示测试 将在TFS上正确运行(假设构建def,CI &。设置 已正确设置)。

我们也尝试将JS输出重定向到bin目录,这在VS中工作正常,但VS Team Services构建由于某种原因无法复制.js文件。

理想情况下,我们想:

  • ,以避免将文件复制到.TS的输出目录
  • ,以避免在其他参考专门添加了 bin目录。
  • 使用放肆编译模式外(如VS已经编译我们的打字稿)

回答

3

我不知道这个答案仍然是与你有关的,但它也可以成为别人有用。那么让我们开始使用TypeScript和团队服务。理想情况下,您只希望将TypeScript文件签入Team Services。团队服务需要构建JavaScript的TypeScript,只需添加相应项目的Visual Studio Build步骤即可轻松实现。请注意,包含TypeScript的项目在其csproj文件中也获得了其他TypeScript设置。这也适用于你的单元测试。您应该在Team Services中将单元测试构建为常规JavaScript。

您需要做的第二件事就是设置测试环境。这意味着您必须下载2个扩展名,即Chutzpah Test AdapterChutzpah Test Runner。这些扩展允许您运行(使用代码覆盖)并调试您的单元测试。 Chutzpah使用PhantomJS作为内存浏览器来运行你的单元测试。那么这些扩展与团队服务无关。这些扩展只适用于您的本地开发环境。那是一个问题。我们可以通过安装Chutzpah NuGet package来解决这个问题。这个NuGet软件包将所有依赖项下载到您的软件包文件夹中,这意味着它下载PhantomJS,而且还下载QUnit,Jasmine和代码覆盖库。这意味着你不必在你的项目中引用它们。只要从你的项目中删除它们。然后您可以添加一个chutzpah.json配置文件。在该文件中,您可以设置您的测试框架(茉莉花,qunit等)和单元测试的引用文件。但也包括应该被排除在代码覆盖范围之外的文件,主要是你的库,如jQuery和Angular。当你这样做时,你仍然应该能够在你的开发环境中运行你的单元测试,这非常好。我们没有在Team Services中设置任何单元测试。

那是最后一部分。在构建流程中,您应该为JavaScript单元测试添加一个附加的步骤。您不能将它与.NET单元测试合并,因为使用了不同的适配器,其他程序集也被引用为测试程序集。在构建步骤中,您需要定义3件事情,即测试程序集,VS测试版本和自定义测试适配器的路径。您应该插入以下值:

  1. 试件应为:** \ * tests.js

与.tests.js标记为测试文件结尾的所有文件。

  • VS测试版本:最新
  • 唯一一支服务的最新测试版支持新的测试适配器。

  • 路径的自定义测试适配器:$(Build.SourcesDirectory)\包
  • 这是你的NuGet包下载到的文件夹。 Chutzpah测试适配器位于此文件夹的子文件夹中。

    那么,关于它,希望这可以帮助。

    +0

    对于使用TypeScript编写的测试,可能需要为测试程序集指定* .ts,而不是* .js。那是我的情况,我已经完成了这里描述的所有内容,并且VSTS显示“没有测试可用于所提供的源代码”。 – 2016-09-13 09:56:46

    相关问题