在2012年TFS比赛中放纵地跑茉莉花可以';找不到测试中的引用文件

在2012年TFS比赛中放纵地跑茉莉花可以';找不到测试中的引用文件,tfs,jasmine,chutzpah,Tfs,Jasmine,Chutzpah,我用Chutzpah来做茉莉花测试。 我已经将Chutzpah DLL添加到解决方案中,并更新了构建以运行*.js测试 项目结构如下: MyApp.Web Scripts App Home DateControl.js MyApp.Web.Tests Scripts Jasmine lib Chutzpah (dlls) Sp

我用Chutzpah来做茉莉花测试。 我已经将Chutzpah DLL添加到解决方案中,并更新了构建以运行*.js测试

项目结构如下:

MyApp.Web
    Scripts
        App
            Home 
                DateControl.js 
MyApp.Web.Tests 
    Scripts 
        Jasmine 
        lib
            Chutzpah (dlls) 
        Spec 
            App 
                Home 
                    DateControlSpecs.js
Jasmine测试文件使用引用标记来引用要测试的文件

/// <reference path="../../../../../../App.web/scripts/app/home/datecontrol.js" />
dateControl是正在测试的对象。 如果我将要测试的代码复制到Jasmine测试文件中,那么测试就通过了。 jasmine使用Visual Studio 2013中测试资源管理器中的Chutzpah测试适配器通过引用标记进行测试

我不知道这为什么不起作用

更新

@jessehouwing的回答为我指出了问题的方向

生成服务器上的生成文件夹具有以下结构

垃圾箱 _发布网站 src

jasmine测试脚本和库被复制到bin,而测试中的脚本文件被复制到src目录和_publishedwebsite目录


我正在寻找一个易于管理的解决方案,以便任何未来的开发人员都不需要知道他们需要将任何新脚本链接到测试项目中。

这很可能是由于Team Build将源代码和二进制文件文件夹分开,并在二进制文件文件夹中强制执行不同的输出结构。这意味着您的文件不在您期望的位置

为了确保测试运行程序始终能够找到您的引用,您必须使用Visual Studio中的“添加为链接”选项,并将它们的生成操作设置为“始终复制”,以便在测试执行时将它们复制到测试目录


另外,您可能需要。

我现在可以接受的解决方案

对于jasmine测试文件和测试中的文件,我根据Chutzpah文档在属性中添加了“始终复制”。我没有意识到测试中的文件实际上与jasmine测试文件一起被复制到builds bin文件夹。 因此,在构建服务器上,我最终得到了以下结构

bin
    scripts
        app
            * application js files
        specs
            * jasmine test files
在jasmine测试文件中,我添加了两个引用:

  • 要测试的文件的Visual Studio目录结构的第一个
  • 第二个是构建bin文件夹结构
黑客1

我可以通过向我的jasmine测试文件添加另一个引用来实现它,该文件使用构建目录的结构,而不是解决方案目录结构,但由于路径可能键入错误,这同样会出错

下面的第二个参考将允许在VS测试资源管理器和TFS构建中运行测试

/// <reference path="../../../../../../App.Web/scripts/app/home/datecontrol.js" />
/// <reference path="../../../../../_PublishedWebsites\App.Web/scripts/app/home/datecontrol.js" />
//
/// 
黑客2


通过向项目的后期生成事件添加xcopy命令,我可以将要测试的文件复制到与jasmine测试文件相同的位置。

我希望找到一个易于维护且不需要未来开发人员将新文件链接到测试项目中的解决方案。希望与现实。。。对不起,黑客1是我的选择:)
/// <reference path="../../../../../../App.Web/scripts/app/home/datecontrol.js" />
/// <reference path="../../../../../_PublishedWebsites\App.Web/scripts/app/home/datecontrol.js" />