2010-11-15 70 views
1

我正在編寫功能測試和我正在編寫測試的方法必須訪問App_Data文件夾中的文件。我曾嘗試從App_Data文件夾獲取文件的功能測試

System.Web.HttpContext.Current.Server.MapPath("~/App_Data/test.txt"); 

以及

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "test.txt"); 

他們兩人都沒有工作。有沒有辦法在功能測試中實現這一點?

在這方面的任何想法,非常感謝。

感謝,

拉賈

+0

他們不工作的方式?你是否收到某種錯誤信息? – mellamokb 2010-11-15 20:42:15

+0

它沒有將對象引用設置爲第一個對象的實例。這很有意義,因爲Httpcontext.Current將爲空,因爲我正在運行功能測試,而不是通過HTTP實例化此服務。第二次嘗試(path.combine)不起作用,因爲它只是採用c:\ App_Data \ Test.txt,導致文件未找到異常。 – Raja 2010-11-15 20:50:02

回答

0

我終於發現一個解決方案(我的解決方案設計師的幫助下)。我們爲功能測試項目設置了一個應用程序配置,並將文件名設置爲一個應用程序設置。之後,我們指定實際文件的相對路徑爲

[DeploymentItem(@"..\..\Project1\App_Data\Test.txt")] 

屬性爲測試類。我們添加了一個簡單的黑客使用絕對路徑,如果它在測試(應用程序配置)和

Server.MapPath("Test.txt") 

如果它沒有測試。該解決方案的邏輯是,由於我們將該文件作爲DeploymentItem放置,因此它將直接轉到相應的TestResults文件夾,因此如果我們使用絕對路徑,它將能夠引用它。

希望這可以幫助別人。