2012-11-26 58 views
1

我有一種情況,我正在運行單元測試並試圖獲取項目基本路徑,它給我一個奇怪的輸出。C#單元測試 - 怪異的項目目錄

D:\VSCode\Bob.Smith\Projects\MySolution\DEVELOPMENT\MyClasses\MyProject\TestResults\Jacob.Freeman_P1004 2012-11-26 09_21_33\Out 

這是VS的一個已知問題還是我錯過的東西?我正在使用下面的行,沒有其他代碼來獲取目錄信息。

string output = null; 
output = Environment.CurrentDirectory; 

我已經嘗試了不同的各種方式來獲取目錄信息如下,但它仍然給我相同的輸出。

output = System.IO.Directory.GetCurrentDirectory() 

在此先感謝。

回答

4

由於文檔指出Environment.CurrentDirectory

獲取或設置當前工作目錄的完全限定路徑。

當前工作目錄不一定是項目的基本路徑 - 它是當你啓動一個EXE。運行測試時,此路徑由測試運行器設置。程序運行時,這個變量可能會改變。

在應用程序中,您應該使用Assembly.GetEntryAssembly().Location來獲取您的exe文件的位置。這對於測試運行者執行的測試不起作用。

如果出於測試目的,您只需要測試dll文件的位置,您可以使用typeof(SomeTypeThatIsDeclaredInThatDLL).Assembly.Location

+0

很好的解釋,謝謝! – Jacooobley

+0

謝謝,幫幫我吧! – TheGeekZn

0

它按設計工作。您的測試在不同的目錄中針對bin執行。

+1

這可能是一條評論。 – TheGeekZn

+0

這個問題的確切答案是「這是一個已知問題」 –

+0

我們正在尋找適當的答案。意思是,上述答案將是一個「確切」的答案。 – TheGeekZn