2012-01-05 162 views
9

我有一個單元測試項目與Visual Studio中的項目在同一個解決方案中設置。單元測試是通過Visual Studio中的內置單元測試工具完成的(包含在Premium和更高版本中)。我需要在測試項目中運行單元測試時加載一個位於項目本身路徑中的文件,而不是測試項目。如何從測試項目中獲取項目的路徑?

文件包括的主要項目的一部分,並具有以下特性:

  • 生成操作:內容
  • 複製到輸出目錄:始終

我需要寫一個單元測試,對於依賴於這個文件的函數,或者我將遇到一個錯誤狀態,並且將不能編寫100%覆蓋該函數的測試。

如何從單元測試項目中獲取實際項目的執行路徑?

編輯:具體功能讀取配置文件中的所有行,並將它們一次一個地存儲在列表中。示例代碼如下:

public List<string> LoadConfigFile() { 
    List<string> models = new List<string>(); 
    StreamReader sr = new StreamReader(Path.GetDirectoryName(Application.ExecutablePath) + @"\" + Properties.Resources.SupportedModelsConfigFile); 

    while ((line = sr.ReadLine()) != null) 
    { 
     models.Add(line); 
    } 

    sr.Close(); 
    return models; 
} 

主要問題:運行時,內部或外部的IDE的程序,但運行單元測試時Application.ExecutablePath工作得很好,它把我送到Visual Studio中的一個目錄,特別是在這個目錄:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe 
+0

推出的路徑你拿的文件在幹什麼? – 2012-01-05 18:32:24

+0

如果你有代碼已經寫好了,也許粘貼代碼將是一個好主意,並在該代碼中發表評論,如果您遇到問題,並且您想要執行代碼中的哪個位置或添加一些附加功能... – MethodMan 2012-01-05 18:33:52

回答

13

,你可以設置一個變量,以獲得其中應用程序正在從

var execPath = AppDomain.CurrentDomain.BaseDirectory; 
+0

這讓我到正確的文件夾路徑。另外,我需要將我的配置文件包含在部署中(測試 - >編輯測試設置 - > local.test,單擊部署,然後添加有問題的文件。這會將外部文件添加到測試用例結果文件夾,Visual Studio在運行單元測試時使用 – ford 2012-01-05 19:07:11

+0

您是否考慮過調查資源文件的使用 – MethodMan 2012-01-05 19:09:25

+0

我在其他地方使用過資源文件,但在這種情況下它並不合適 – ford 2012-01-06 22:46:44

相關問題