我正在爲我的web應用程序的文件上傳功能編寫單元測試。我嘲笑一個測試文件,並將其保存在我的測試項目駐留的目錄的「Test files」子目錄中。Visual Studio項目目錄
因爲我不想硬編碼文件路徑。我如何通過代碼知道我的項目目錄?我用@「.. \ Test files \ test1.xml」,但它不起作用。
在此先感謝!
我正在爲我的web應用程序的文件上傳功能編寫單元測試。我嘲笑一個測試文件,並將其保存在我的測試項目駐留的目錄的「Test files」子目錄中。Visual Studio項目目錄
因爲我不想硬編碼文件路徑。我如何通過代碼知道我的項目目錄?我用@「.. \ Test files \ test1.xml」,但它不起作用。
在此先感謝!
請記住,您的單元測試項目將從它自己的bin目錄運行而不是從項目目錄運行。你可以得到的路徑,使用bin目錄:
Assembly.GetExecutingAssembly().Location
然而,最容易做的事情是設置你的測試文件和文件夾複製到輸出目錄。只需在解決方案資源管理器中單擊您的文件,按F4,然後將「複製到輸出目錄」更改爲「始終複製」或「如果更新則複製」。文件夾結構將自動被複制。那麼你的相對路徑語句將正確工作。
我相信HttpContext.Current.Request.PhysicalApplicationPath將爲您提供應用程序根目錄的物理目錄。
我會將子目錄的名稱存儲在web.config文件中,然後使用System.IO.Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath)構建子目錄的完整路徑。
只是另一種方式:
int ix = Application.StartupPath.LastIndexOf(Application.ProductName);
string s = Application.StartupPath.Remove(ix + Application.ProductName.Length + 1);
編輯:我張貼後,我看到的問題是對於Web應用程序,而我的解決方案是爲Windows窗體。
更壞的情況下,您可以將您的路徑添加到配置文件。否則...是的...我們需要知道您使用的語言? – 2009-08-13 03:05:21
謝謝安德烈!它在C#中。我可以將這個項目上傳到構建服務器,這就是爲什麼我不想使用硬編碼文件路徑。 – Roy 2009-08-13 03:33:01