【问题标题】:Can AppHarbor set a conditional compilation symbol during build?AppHarbor 可以在构建期间设置条件编译符号吗?
【发布时间】:2012-02-22 05:44:42
【问题描述】:

AppHarbor 可以在构建过程中设置条件编译符号吗?也许很简单:AppHarbor

我有一些无法在服务器上运行的测试(它们依赖于测试数据文件)。

如果 AppHarbor 可以设置条件编译符号,那么当该符号存在时,我可以在测试中添加 [Ignore] 属性。

或者,在 AppHarbor 运行时是否有更好或不同的方法来忽略特定测试?

或者,有没有办法让测试代码正确引用驻留在项目中的测试数据文件?

谢谢! 格伦

编辑:我通过将数据文件作为资源嵌入到测试项目中来进行测试。不理想,但目前还可以。但是,仍然想知道是否可以按照描述设置编译符号。

【问题讨论】:

    标签: unit-testing conditional-compilation appharbor


    【解决方案1】:

    设置“AppHarbor”编译符号是一个有趣的建议,但目前 AppHarbor 不支持。您可能希望将其添加为 feature request

    运行测试时,Environment appSetting 设置为 test。您可以有条件地使用它来跳过某些测试。如果您希望拥有自己的配置,您可以使用 Web.Test.Config 文件来应用任何必要的转换,以便您确定是否应该运行测试。

    this article 中描述了这两种方法。

    一般来说,我的建议是避免依赖运行测试时不存在的文件。这也将使应用程序在任何 CI 环境中工作。正如您所描述的,将文件作为嵌入式资源包括在内是一种选择,但也应该可以将其包含在您的项目中,并将Build Action 属性设置为Content,并且它将在输出目录中可用。

    【讨论】:

    • if ("Test" == ConfigurationManager.AppSettings["Environment"]) { Assert.Ignore("Ignored on AppHarbor"); }
    【解决方案2】:

    想补充@runesorensen 的答案: 每个要忽略测试的测试项目都应该有 app.config 文件,否则“环境”应用设置将为空。

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      相关资源
      最近更新 更多