2012-07-06 62 views
2

在AppHarbor文檔中指出,配置轉換應用於網站和後臺工作人員配置文件。但是,我有一個不可執行的,不可部署的集成測試項目,需要對測試環境進行app.config轉換。是否可以對AppHarbor測試項目應用配置轉換?

到目前爲止,我沒有與下面這樣的文件結構中的任何成功,我猜AppHarbor不支持在測試過程中執行構建步驟上DLL項目配置轉型:

Specs.proj 
+ 
+-- Specs.dll.config 
    + 
    +-- Specs.dll.Debug.config 
    + 
    +-- Specs.dll.Test.config 

有誰知道這是否可能?

+0

你檢查了文檔嗎? http://support.appharbor.com/kb/getting-started/managing-environments – jrummell 2012-07-06 14:25:01

+1

@ jrummell我有,是的。該文檔僅涉及發佈環境的轉換,並提及web和後臺工作(.exe)項目,但不提供.dll項目。 – Scott 2012-07-06 14:28:44

+0

對,轉換dll配置沒有意義。看到我的答案。 – jrummell 2012-07-06 14:43:59

回答

2

圖書館項目(dll)的轉換配置沒有意義。您的應用程序將使用您的Web應用程序的exe或web.config的app.config。

因此,您需要將相關的配置設置從您的dll配置複製到您的exe/web配置轉換。

更新

由於這是運行測試,我推薦了不同的方法:注射它們與依賴。有關此主題的優秀帖子,請參閱Configuration Settings Are A Dependency That Should Be Injected

下面是改變了我的想法的自以爲是的摘錄:

那麼,爲什麼一個黑客以配置設置添加到您的單元測試項目? 那麼,web.config和app.config就像任何其他文件一樣。因此,在類中引用配置設置意味着 類對文件系統具有直接依賴性。如果你的單元測試在我的 文檔中打開了一個文件,或者從互聯網上下載了一個網頁,那麼爲什麼 舒服(我希望),那麼爲什麼 人認爲訪問web.config是可以接受的呢?

+0

在測試構建階段,我沒有運行Web項目或後臺工作應用程序; AppHarbor構建系統正在運行測試(使用測試運行器),它使用測試項目中找到的配置文件(這是一個DLL)。或者至少,這是它在本地工作的方式,無論是從MsBuild CLI還是在Visual Studio下。 – Scott 2012-07-06 14:55:11

+1

現在我明白了。我試着用CI服務器走這條路,最後我用DI框架注入了我的設置。 – jrummell 2012-07-06 14:59:07

+2

另請注意,我們目前僅在部署之前應用版本轉換,而不是測試轉換。 – friism 2012-07-06 18:54:38

0

我想使用app harbor配置值進行集成測試。我無法讓應用程序注入正確的配置設置,但我靠得很近。

我添加了一個app.config到我的web項目,因爲我的web項目中有我的集成測試。

我增加了環境的應用程序設置的app.config:

<appSettings> 
    <add key="Environment" value="localconfig"/> 

我注意到,當代碼運行在應用懷有的環境價值爲測試:27017

我寫了這個代碼:

private static string GetMongoDbConnectionString() 
{ 
    string con = ConfigurationManager.AppSettings.Get("MONGOHQ_URL") ?? 
       ConfigurationManager.AppSettings.Get("MONGOLAB_URI"); 
    string env = ConfigurationManager.AppSettings.Get("Environment"); 
    if (env.StartsWith("Test", StringComparison.OrdinalIgnoreCase)) 
    { 
     con = "mongodb://xxxxxxxxx"; 
    } 
    return con; 
} 

凡xxxxxxxxx是我想在集成測試時使用的值。

相關問題