2012-02-22 99 views
3

AppHarbor可以在构建期间设置一个条件编译符号吗?也许简单地说:AppHarborAppHarbor可以在构建过程中设置一个条件编译符号吗?

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

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

或者,有没有更好或不同的方式来忽略在AppHarbor上运行时的特定测试?

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

谢谢! Glen

编辑:我通过在测试项目中嵌入数据文件作为资源来使测试工作。不理想,但现在好了。但是,仍然想知道是否可以按所述设置编译符号。

回答

4

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

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

这两种方法都在​​中描述。

通常我的建议是避免依赖运行测试时不存在的文件。这也将使应用程序在任何CI环境中都能工作。将文件作为嵌入资源包括在内是一个选项,但也可以将其包含在项目中,其中Build Action属性设置为Content,并且它将在输出目录中可用。

+1

if(“Test”== ConfigurationManager.AppSettings [“Environment”]){ Assert.Ignore(“Ignored on AppHarbor”); } – harriyott 2012-05-21 13:23:01

0

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

相关问题