2013-03-19 69 views
0

使用VS 2012 C#.net 4.0,我有一個使用ConfigurationManager for config構建控制檯應用程序的項目。 這一切都很好。引用程序集中的ConfigurationManager

我在同一個解決方案中用於測試第一個項目(使用nunit)的第二個項目。
這個nunit項目包含第一個項目作爲參考,並執行第一個項目的可執行文件作爲子進程。

這不起作用。因爲,儘管nunit項目構建了第一個項目的可執行文件,但它不會創建[第一個項目可執行文件] .exe.config文件。

任何人都知道爲什麼不呢?有沒有一個按鈕,我可以推動獲取[第一個項目可執行文件] .exe.config創建時,我建立的nunit項目?

回答

1

無論何時您使用配置文件,該文件都必須與正在運行的進程關聯。在這種情況下,運行過程就是你的單元測試項目。

在單元測試的上下文中使用ConfigurationManager時,它將爲單元測試項目查找值的配置文件(App.Config)。

您正在引用控制檯應用程序程序集,但無法在單元測試過程中引用控制檯應用程序的配置文件。

因此,您應該添加一個新的App.Config到單元測試項目並將您的配置值放在那裏。

希望這會有所幫助。

+0

感謝Davin,我已經試過沒有成功 我沒有試圖從單元測試過程中引用控制檯應用程序的配置文件。 而是使用單元測試項目(作爲參考)構建的consoleApp.exe進程內部。 Building unitTest項目爲我提供了consoleApp.exe,unitTest.dll和unitTest.dll.conf __但沒有consoleApp.exe.conf__ 和consoleApp.exe似乎沒有從unitTest.dll.conf中獲取設置。 所以它不能正常運行。 – Murray 2013-03-20 08:01:04

0

它可能不是很漂亮,但添加預生成事件:

copy "$(SolutionDir)ConsoleApp\App.config" "$(TargetDir)ConsoleApp.exe.config" 

解決了我的眼前的問題。