2012-09-24 38 views
4

我有一個PowerShell腳本,它可以通過shell向外運行到nunit-console-x86.exe以運行在腳本中通過對MSBuild進行shelling編譯的VS中構建的程序集(DLL)中的測試的.slnnUnit測試尋找{程序集名稱} .dll.config

Exec { invoke-expression "$BUILD_DIR\Tools\NUnit.2.5.10.11092\nunit-console-x86.exe $full_test_assembly_name /xml:test-results/$test_results_file_name" } 

的一些測試使用System.Configuration.ConfigurationManager加載配置設置。 nunit-console-x86.exe{$full_test_assembly_name}.dll.config中搜索這些配置設置,但是此文件不存在,因爲我的腳本無法創建它(原因如下)。

每個測試項目.csproj都包含一個本地App.config文件。當在Visual Studio中運行測試項目的測試時,nUnit會在本地App.config中搜索配置設置。這種行爲正如我所料。

我也有一個應用程序.sln作爲其啓動項目的站點/服務.csproj,加上對各種測試項目的引用。當我從Visual Studio運行應用程序.sln的整個測試套件時,在運行任何測試項目的測試時,nUnit會在測試項目的本地App.config中搜索配置設置。

這種行爲不像我預期的那樣 - 我以爲nUnit會搜索位於啓動站點/ service .csproj中的web.config。

作爲一個實驗,我從其中一個測試項目中刪除了App.config。現在,當我在Visual Studio中運行測試時,nUnit會拋出無法找到{test-project-assembly-name}.dll.config的錯誤。所以顯然uUnit默認在{test-project-assembly-name}.dll.config中查找配置設置。

我想我的測試腳本調用nUnit來運行測試程序集測試,以便從web.config(我的構建腳本複製到構建目標目錄)加載任何配置設置。

我該如何做到這一點?我可以指示nunit-console-x86.exe從我提供的配置文件路徑作爲參數加載配置設置嗎?我可以以不同的方式組織我的.sln和/或.csproj,以便使uUnit使用Web.config進行配置設置嗎?

回答

0

快速回答是,NUnit不管理配置文件。它留下的配置文件的處理的框架:

http://nunit.net/blogs/?p=9

如果你想NUnit的使用特定的配置文件,您可以創建一個NUnit的項目,並複製您要使用到配置文件[NUnitProjectName ]的.config。這個配置文件需要和NUnit項目駐留在同一個目錄中。

3

解決方法是使用控制檯開關/domain=multiple。當您將默認域用法設置更改爲對每個部件使用單獨的AppDomain時,它會導致NUnit加載項目app.config。該選項僅在NUnit 2.5或更高版本中可用。

nunit-console your.project.csproj /domain=multiple 
0

不知道這是否仍適用於OP的問題,但是當你構建測試項目中的多個.dll.config文件複製過來。如果您需要爲測試定製配置,請將.config複製到測試項目中。然後在Properties窗格集Copy to Output DirectoryCopy Always,這將覆蓋項目配置文件。