2012-05-10 72 views
0

我正在使用WebAii庫進行UI測試 - 我想測試我的組件是否顯示與數據庫中相同的記錄,因此我需要將應用程序的連接字符串切換爲指向測試數據庫僅用於運行測試的時間。什麼是最好的方式來做到這一點?如何在運行應用程序之前動態更改連接字符串?謝謝動態更改UI測試的連接字符串

回答

0

什麼樣的應用呢?這首先可能是不太合適的代碼的一個表現。接下來,測試代碼有一個單獨的環境是很常見的。

例如,如果您部署到ASP.NET with Visual Studio,則可以使用Web.config file transformations在部署到時(例如, test.contoso.com與www.contoso.com。 transformation syntax允許您在部署不同的配置時定義新的連接字符串,或者從基本Web.config中更改現有的連接字符串。

如果你有一個單獨的環境並對它進行控制,你可以編寫幾個(Power)shell腳本,在測試之前將帶有「test」連接字符串的web.config複製到你的應用程序根目錄。然後運行第二個腳本以在測試運行後重置原始web.config。

如果您可以在上下文中訪問您的deploy目錄,您將運行測試,甚至可以在單元測試項目中簡單地包含Web.test.config文件。在[AssemblyInitialize]

  1. 文件複製_ \\ {你的應用服務器} {你的應用程序目錄} \ web.config中\\ {你的應用服務器} {你的應用程序目錄} \ Web.config.orig
  2. 文件副本Web.test.config\\ {您的應用程序服務器} {您的應用程序目錄} \ Web.config
  3. 睡幾秒鐘?

然後在[AssemblyCleanup]中做相反的處理。

其他策略也存在。在調試模式下,您可以爲應用程序構建一個覆蓋,它檢查各種事物(特殊文件,附加配置,cookie,額外查詢字符串)。或者,您可以在應用中設置一個設置管理器,以便在安排測試時單擊測試設置(單擊UI更改數據庫設置)。

然而,很可能通過分解代碼來減少依賴關係,從而獲得最佳複合獎勵。然後你可以編寫單元測試,其中存根/模擬/僞造數據庫。您可以使用代碼覆蓋工具來驗證您是否已經測試了特定方案,或者看到額外的集成測試會在此時重複覆蓋。