2011-06-22 88 views
0

我正在編寫一個測試用例,其中測試方法驗證路徑是否存在。路徑位於正在輸出程序集的文件夾中。 所以我有代碼獲取文件夾路徑爲 string assemblyLocation = typeof(ReportViewer).Assembly.Loaction;測試用例中的組裝路徑

的ReportViewer存在於同一組件。當我運行測試用例時,它最終會選擇正在運行的程序集測試用例的文件夾路徑。

當我運行應用程序,測試方法返回正確的道路,但在測試情況下,它給出了試件我的路徑。任何線索爲什麼?

我使用的MSTest作爲測試框架。

+0

我假設你使用的是VS單元測試框架在我的答案和重新標記(好像從你描述的症狀正確的),請糾正我,如果我錯了假設。 –

回答

0

沒有指定但是您所使用的單元測試框架,在Visual Studio專業版(及以上)的內置測試,測試是從測試組件測試結果的出來目錄執行,所有引用的程序集複製有。如果您的代碼依賴於任何未引用的程序集(加載了反射或非託管程序集)或任何其他需要在執行目錄中的資源,那麼您需要在測試的類初始化期間將它們複製到那裏(它在構造函數之前運行)。

這使得測試環境的靈活的配置(例如,單獨的app.config文件)。

編輯 - 回覆評論:

的代碼返回正確的結果 - 執行目錄中,我假定你正在尋找的bin目錄的原因是,你有沒有下的一些資源。如果是這種情況,請在測試開始之前(在測試的類的類初始化方法中)將它們複製到測試的out dir。

+0

我正在使用MSTest。鑑於MSTest將所有程序集複製到測試程序集目錄中,我們將如何處理我面臨的問題? – Sheraz

+0

然後我的假設是正確的。請參閱編輯。 –

+0

@Sheraz不要忘記,在客戶端的機器上,應用程序通常可以安裝在任何地方。您必須確保應用程序需要的所有內容都位於安裝目錄(=執行目錄)中,但可以更改的內容除外,應該在appdata之下。測試的輸出目錄是他們正在測試的「應用程序」被「安裝」的位置。 –