2011-04-07 223 views
7

我正在使用Microsoft Visual Studio測試框架,我的一些測試需要一個xml文件作爲輸入。 目前我已將它們放在我的TestProject的資源目錄下,並通過「.. \ .. \ whatever」路徑名稱訪問它們。我希望在使用測試資源文件時有一個好的做法建議,因爲我想在所有這些情況下重新使用我的測試 - 直接從VS 2010 - 在我的服務器上構建過程中 - 在持續集成環境中 一個透明(和簡單)的方式。C#測試資源

回答

8

首先,我通常會盡量減少在測試過程中依賴文件系統的需要(通過引入文件系統的某種抽象,以便可以模擬文件系統訪問)。

如果這是不可能的,我將這些文件包含在測試項目中,名爲TestData或類似的子文件夾中。然後,我將「複製到輸出目錄」設置爲「始終複製」,以便該文件包含在輸出中,並且位於與測試程序集有關的已知位置(不管該構建是否在Visual中完成Studio或構建服務器)。只要沒有測試代碼正在修改文件,只需要它們讀取數據,就可以很好地工作。

+0

你在哪裏設置複製到輸出目錄以始終複製?在每個文件上,或者您可以在目錄上全局設置它? – 2011-04-08 12:05:03

+0

@Terenzio:我想,你需要把它設置在單個文件上。我認爲你可以通過在解決方案資源管理器中選擇一系列文件來做到這一點(現在不能檢查:目前沒有Visual Studio)。 – 2011-04-08 12:36:01

+2

VS2010:還將生成操作文件屬性設置爲「無」。 – Dmitry 2011-06-16 07:35:31

0

我在我的一個集成測試中做了這樣的事情;我已經用相同的方式解決了它。只要你的文件被檢入到源代碼控制中,並且你使用了一個相對路徑(它看起來像你),它應該按預期工作。

0

我們對CI使用TFS2010。所有輸出文件放入Binaries文件夾中。對於像XML這樣的配置資源,我們使用Copy來輸出目錄選項爲Always always。所以它會一直放在輸出目錄中。

2

我會建議從以下方法answer。這是一個類似的問題。 該方法利用了DeploymentItem屬性,也用於進行數據驅動的單元測試。