在你的測試中傳遞一個相對路徑到被測試的類的方法。這樣可以避免使用硬編碼的完整路徑,只要你的測試項目總是在相對於你的源項目的相同位置,它就可以工作。
例如如果你有你的源設置是這樣的:
\Solution\src\Project\bin\debug\myFile.txt
\Solution\test\TestProject\bin\debug\TestAssembly.dll
的相對路徑將是@"..\..\..\..\Project\bin\debug\myfile.txt"
更新
我不明白爲什麼你的測試是從一個臨時文件夾中運行。我要麼使用測試運行器(如Resharper),要麼設置我的測試項目如下:
- 打開包含測試項目的項目屬性。
- 轉到調試選項卡和設置以下值:
- 啓動外部程序:輸入nunit.exe的位置,例如在我的電腦上安裝到C:\ Program Files \ NUnit 2.5.5 \ bin \ net-2.0 \ nunit.exe。
- 命令行參數:輸入包含您的測試的程序集名稱,後跟run參數,例如TestProject.dll /運行。
- 將包含測試的項目設置爲啓動項目。
- 命中F5。
這樣您的測試總是從bin\debug
運行(取決於您的構建配置),因此您可以依賴項目始終處於相同的相對位置。
如何確保測試項目與源項目相關。當我運行NUnit GUI時,它會複製dll並在臨時文件夾中運行應用程序。 – helloworld 2011-04-17 07:52:36
@enableDeepak我不直接運行NUnit GUI,請參閱我的更新瞭解我的作用 – Graham 2011-04-17 10:48:44
@enableDeepak NUnit使用影子複製從臨時文件夾運行以避免鎖定dll。在NUnit2的早期版本中,這允許NUnit保持dll加載,但仍允許您重新編譯。這可能不再需要,我認爲有一個設置可以關閉它。檢入NUnit GUI的選項。 – 2011-04-17 10:57:45