【问题标题】:Chutzpah running Jasmine in TFS 2012 can't find referenced file under test在 TFS 2012 中运行 Jasmine 的 Chutzpah 找不到被测试的引用文件
【发布时间】:2014-01-22 10:27:00
【问题描述】:

我正在使用 Chutzpah 运行我们的 Jasmine 测试。 我已将 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" />

Jasmine 测试已运行,但出现以下错误:

ReferenceError: Can't find variable: dateControl in file

dateControl 是被测对象。 如果我将要测试的代码复制到 Jasmine 测试文件中,则测试通过。 使用 Visual Studio 2013 的测试资源管理器中的 Chutzpah 测试适配器,带有引用标记的 jasmine 测试通过。

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

更新

@jessehouwing 的回答为我指出了问题的出路。

构建服务器上的构建文件夹结构如下

垃圾箱 _已发布网站 源代码

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

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

【问题讨论】:

    标签: tfs jasmine chutzpah


    【解决方案1】:

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

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

    bin
        scripts
            app
                * application js files
            specs
                * jasmine test files
    

    在我的 jasmine 测试文件中,我添加了两个引用:

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

    黑客 1

    我可以通过添加对我的 jasmine 测试文件的另一个引用来使其工作,该文件使用构建目录的结构而不是解决方案目录结构,但这同样容易出错,因为路径可能输入不正确。

    下面的第二个参考将允许测试在 VS Test Explorer 和 TFS Build 中运行

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

    黑客 2

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

    【讨论】:

    • Hack 1 是我选择的选择 :)
    【解决方案2】:

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

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

    另外,您可能需要enable "Deployment" in the Test configuration in your Build Definition, as outlined here

    【讨论】:

    • 我希望有一个易于维护且不需要未来开发人员将新文件链接到测试项目的解决方案。
    • 希望与现实……对不起。
    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 2017-01-17
    • 2013-11-26
    • 1970-01-01
    • 2016-12-03
    • 2017-01-30
    • 2013-11-13
    • 1970-01-01
    相关资源
    最近更新 更多