我的团队正在尝试将Chutzpah集成到TFS 2012构建过程中。我们使用this blog post作为起点。
在较高的层面上,实际问题是构建代理上下文中的Visual Studio Test Runner根本没有找到Chutzpah钩子。因此,虽然我们可以将**\*.js
定义为测试源,但实际上没有找到并初始化Chutzpah引导程序,但测试运行器对这些文件没有任何作用。
在更详细的层面上,当我们检查日志以加载构建控制器的自定义程序集时,我们得到三条有关消息:
Summary: There were 0 failures, 2 errors and 1 warnings loading custom activities and services.
Error: Method 'ToXml' in type 'Chutzpah.VS2012.TestAdapter.ChutzpahAdapterSettings' from assembly 'Chutzpah.VS2012.TestAdapter, Version=2.2.0.171, Culture=neutral, PublicKeyToken=1ca802c37ffe1896' does not have an implementation.
Error: API restriction: The assembly '...\AppData\Local\Temp\VSTFSBuild\8c8e9402-1169-4782-99a9-ce42f83be8f0\A1288811191\Chutzpah\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll' has already loaded from a different location. It cannot be loaded from a new location within the same appdomain.
Warning: Could not load file or assembly '...\AppData\Local\Temp\VSTFSBuild\8c8e9402-1169-4782-99a9-ce42f83be8f0\A1288811191\Chutzpah\phantomjs.exe' or one of its dependencies. The module was expected to contain an assembly manifest.
除了这些信息之外,我们或多或少地陷入困境。我很想听听那些实际上让Chutzpah在独立的2012构建服务器上运行的人,以便我们可以比较配置。
答案 0 :(得分:1)
错误:API限制:程序集'....
表示TFS在两个不同的位置找到了一个dll。您可以将模式更改为“检查”,并查看是否将\ * \ * test .dll作为为任何测试程序集设置的值,并将其更改为* test * .dll。这样可以防止它多次加载。
另一个错误可能是因为没有重建测试项目。 尝试重新构建测试项目。
我希望这会有所帮助。
答案 1 :(得分:1)
其实Software Carpenter有一点,我相信可能发生的事情是你的普通单元测试的测试规范可能是 test .dll(或类似的东西)这意味着Microsoft.VisualStudio.TestPlatform.ObjectModel .dll作为单元测试dll加载,然后TFS在尝试运行chutzpah测试时再次尝试加载它。
尝试禁用正常的单元测试规范并查看它是否有帮助,如果确实如此,则将您的规范更改为不包含TestPlatform.ObjectModel.dll的其他内容(* test.dll)。
来源:我在尝试使用名称中的Test构建项目时遇到了同样的错误。
答案 2 :(得分:1)
此讨论也在Codeplex上进行。也许可以提供一些帮助。
Javascript Unit Tests on Team Foundation Service with Chutzpah