2010-05-27 31 views
5

我有一些測試用ReSharper運行「從解決方案運行所有測試」功能。其中一個正在測試的類與包含它的程序集位於同一文件夾中的文件具有依賴性。該文件通過MSBuild複製到輸出目錄(將「複製到輸出目錄」設置爲「始終複製」)。如何從NUnit測試中訪問項目文件

問題:測試不是從普通程序集輸出目錄運行,而是在我的用戶配置文件中的一些臨時位置運行。

因此,我真的不知道在哪裏尋找文件 - 測試運行器不會複製到那裏。我可以強迫它?

回答

4

聽起來就像您正在運行陰影複製選項打開的測試。

轉到Resharper-> Options並選擇Unit Testing選項卡(位於列表底部)。取消選中「正在測試的陰影複製組件」,然後重試。

+0

點:)謝謝了! – 2010-05-27 14:49:33

+0

非常好的答案,但影子複製是一個非常漂亮的功能,我發現。沒有從夾具設置手動複製文件的任何替代方法? – Wernight 2011-08-05 07:24:28

6

NUnit網站建議在這種情況下使用Assembly.CodeBase屬性,這會導致我需要的bin/debug。 「

」注意:如果您試圖禁用卷影副本以訪問與組件相同的目錄中的文件,則應該意識到還有替代方法,請考慮使用Assembly.Codebase屬性而不是Assembly.Location。 「

的.Location返回烏里風格地址 「文件://// d://項目......」,所以我用實際的代碼是

string applicationDirectory = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).LocalPath; 
+0

你可以發佈一個鏈接到你發現該報價的頁面嗎? – blachniet 2013-06-26 13:26:11

+0

這是他們的文檔。當前版本的頁面是[http://www.nunit.org/index.php?p=settingsDialog&r=2.6.1](http://www.nunit.org/index.php?p=settingsDialog&r=2.6。 1)。頁的章節是「測試加載程序設置 - 高級」,詳細信息「影子複製」 – Roman 2013-08-06 14:28:43

+0

我有相同的結果有或沒有陰影複製選項,所以我不得不去這個解決方案,併爲我所有的測試文件建立一個絕對路徑通過使用'Path.Combine(applicationDirectory,fileName)'。 – furier 2016-11-15 11:22:38

相關問題