2012-02-22 98 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文件,否則「環境」應用程序設置將爲空。

相關問題