將配置文件自動復制到vs的測試項目中


問題描述:

對一個需要讀取web.config獲取數據庫連接字符串的項目創建單元測試,測試拋出異常:System.NullReferenceException: 未將對象引用設置到對象的實例,一步步debug發現在測試項目中無法讀取被測項目的web.config文件。后來把web.config整個復制到測試項目中,卻也發現不行。無奈之下,把復制到測試項目的web.config改成app.config,卻發現可以從app.config中正確讀出配置信息了。

 

相關約定:

1、如果是WEB應用程序,因為配置文件名必須為web.config,所以如果當前目錄下有web.config文件,就讀取當前目錄下的配置文件,如果當前目錄沒有則讀取根目錄下的配置文件。

2、如果是winform/wpf/控制台應用程序,則配置文件就是【程序名.exe.config】

這些都是.NET配置系統約定好的規則,更詳細的信息樓主可以使用reflector查看System.Web.Configuration.WebConfigurationManager和System.Configuration.ConfigurationManager兩個類的源代碼

3、如果是vs生成的單元測試項目,配置文件名必須是app.config。所以如果是在Web應用程序中運行單元測試,需要把web.config對應地修改成app.config。這樣單元測試項目才能正確地從配置文件中讀出相應的配置。因為單元測試是由測試項目運行的,當運行測試項目時,只是引用了我們的被測項目,所以是尋找測試項目的app.config文件

解決方法:

1.在測試項目中添加app.config文件,將被測項目的app.config文件中的內容復制到測試項目的app.config文件中(不推薦,需要維護兩份app.config文件)。如果是web應用程序,還需要將web.config重命名為app.config,才能正確被測試項目讀取。

2.在解決方案管理器中,右擊測試項目→添加→現有項,選擇被測項目的app.config文件,並選擇“添加為鏈接”(如果直接添加則和方法1無區別,等同於復制文件,需要維護兩個app.config文件,無法隨被測項目中的原文件進行更新)

3、修改測試項目的生成事件,以便能夠自動將web.config (或app.config)復制到測試項目的bin(輸出)目錄下。只需要簡單幾步即可

右鍵點“測試項目”,選擇屬性

image

點擊“生成事件”→在“后期生成事件命令行”的文本框中輸入      copy "$(SolutionDir)\WebApplication1\web.config" "$(ProjectDir)$(OutDir)$(TargetFileName).config" 

其中WebApplication1要替換成你被測試項目的名稱

image

按下“Ctrl+s”保存,這樣每次運行測試項目的時候,他就會從被測試項目中復制一份配置文件

 

參考網址:

Can a unit test project load the target application's app.config file?

用VS2008單元測試需要讀取app.config的項目


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM