2011-11-29 80 views
0

今天我在jenkins中建立了一個新的ms build項目,其中包含單元測試和集成測試。在將項目移至jenkins之前,我使用本地機器運行測試(Nunit,Reshaper)。集成測試資源路徑的最佳實踐?

我的一些集成測試使用數據庫來測試某些邏輯,並將數據庫文件位置配置爲靜態屬性,該屬性在我的測試中用於建立數據庫連接。

正如你可以想象這是一個小問題,當我將項目移動到詹金斯,因爲我沒有在同一位置的數據庫文件。

現在要解決這個問題,我在集成測試中改變了一些SetUp()方法。他們從一個文本文件加載一個文件夾,並且這個文件夾指向一個資源路徑,在那裏存儲我所有需要的文件。現在我可以在詹金斯和我的本地機器上運行測試。

我對此有一種不好的感覺,感覺不對,有些如何。你會怎麼做才能解決我的問題?嘲笑文件是沒有解決辦法,我想與文件進行交互。

謝謝!

回答

1

通常,我認爲,在運行單元測試期間從文件中取出任何東西並不是一個好主意。特別是從txt/xml/etc文件中取出任何內容並不是一個好主意,正如你所想的那樣,它將被複制到debug文件夾中。不同的單元測試引擎的行爲不同,其中一些具有shadow copy選項,其中一些可能會默認打開此選項。 Shadow copy將使幾乎不可能找到原始Debug文件夾中的非dll文件。

我建議將您需要的所有數據嵌入到測試組件中。兩種方法:

  1. 硬編碼測試數據作爲一些類中的字符串。然後將其寫入文件或直接使用它。
  2. 將文件添加爲將嵌入到測試程序集中的資源。
+1

謝謝您的回答。我的問題出現在用於將多個源數據庫同步到一個目標數據庫的應用程序中 - 我完全同意你在單元測試中與文件交互不是好主意,但這是關於集成測試的。我打破了90%的單元測試和10%的整合測試。以及將文件嵌入資源文件的真正問題是:即使是一個空數據庫也有80mb大小(700個大量文件的表)。您是否仍然建議您提供這些附加信息? – Grrbrr404

1

如何將測試數據文件添加到您的源代碼管理系統以及.net項目中。然後將它們配置爲應該將它們複製到「out」目錄中,並且可以在單元測試中訪問它們,因爲它們將通過msbuild複製到該文件夾​​中。

+0

'Shadow copy'會給你帶來這樣的麻煩。 – Snowbear

+0

不使用卷影副本? – Kolja

+0

請參閱我對snowbears的評論回答 - 項目莫名其妙地特里爾爲您的答案 – Grrbrr404