2011-09-08 37 views
4

我正在嘗試編寫一些單元測試,測試哪些代碼會改變web.config運行時。要加載Web.config,使用WebConfigurationManager.OpenWebConfiguration。這在單元測試中效果不好。在單元測試中使用WebConfigurationManager

我有什麼選擇?我試過了:

  1. 將測試配置爲具有方法屬性的ASP.NET測試。這似乎很脆弱,因爲您需要使用[UrlToTest(「http:// localhost:25153/WebSite1」)]對開發服務器運行的端口進行硬編碼。我需要測試在配置不同的多臺計算機上運行。另外我覺得啓動一個IIS服務器只是爲了能夠在單元測試中加載一個文本文件是矯枉過正的。

  2. 使用其他方法從磁盤加載配置。我試過配置管理器.OpenExeConfiguration(),我得到一個配置對象,但這似乎沒有被正確解析。特別是system.web中的sessionState部分,這是一個特定於web的設置,所以這並不令人驚訝。

我該從哪裏出發?

回答

0

您在閱讀web.config時的最終目標是什麼?根據你想要完成的工作,有許多不同的方法來讀取web.config。如果你想讀的connectionString使用: 進口System.Web.Configuration.WebConfigurationManager 然後在你的代碼中使用:(的ConnectionStrings(「的connectionStringName」)的ToString()) 昏暗的CN作爲SqlConnection的=新的SqlConnection 如果你是試圖讀取自定義應用程序設置: 作爲字符串的默認值= ConfigurationSettings.AppSettings(「keynamehere」) 只是種取決於你想讀什麼..

+0

我試圖讀取system.web/sessionState GetSectionGroup方法。 – Nilzor

+0

編輯了我試過的東西。基本上我只想要一個配置對象從磁盤解析文件,它正確解析了所有的web.config設置。 – Nilzor

+0

我不知道這是否適用於您,但web.config文件只是一個XML文檔。您可以讀取它並使用root.descendants進行深入...我將使用XDocument方法。希望我不會把你引向錯誤的道路。 – cgcarter1