2013-03-28 65 views
3

我嘗試寫一些持久性測試和驗證映射對數據庫,我的問題是(我可以在這裏從根本上誤解的東西)功能NHibernate單元測試

前提條件

  1. 的數據庫是手動創建的,是在不斷變化的狀態
  2. 的映射需要在列名稱更改進行更新,添加或刪除
  3. 我不想測試
  4. 期間影響數據庫本身

理想情況下,我想採用當前的數據庫模式(SQL 2008)並將其複製到內存中,這樣我就可以在知道完成我的單元測試時完成測試,SQL數據庫將完好無損並保持不變。

我已經看過在內存中使用SQLite,但如果我理解的東西正確它將生成基於映射文件的架構,而不是檢查映射對數據庫本身是有效的,所以如何複製我的SQL 2008數據庫架構到SQLite沒有太多的努力?或者我應該在測試開始時走上構建新的SQL 2008數據庫的路線,並最終解構它?

回答

0

使用內存中的副本而不是真實的數據庫將證明您的實現有不同的事情。

  • 對於內存中的副本,您將擁有更快的集成測試,證明您的邏輯在內存表示中可以正常工作。也許這對於映射目的來說很好。
  • 對於真實的數據庫,您將會有較慢的集成測試,這可以讓您對性能進行評估,並且可以證明您的邏輯能夠與真實情況一起工作。顯然你需要一個專門的測試數據庫來設置和恢復每個測試/夾具之前和之後。

根據我的經驗,我發現第二種方法在集成測試中給予更多價值,同時使用第一種方法通過模擬和存根進行單元測試。

希望這會有所幫助。

+1

我得出結論,我需要重建我的數據庫作爲我的構建腳本的一部分,它是唯一能夠確保映射和數據庫匹配的唯一方法。 – Mauro