2012-01-12 65 views
1

我有一些integrtion測試,從JPA實體創建一個HSQL數據庫。除了自動增量ID以外,這一切都可以正常工作。這些似乎存儲在測試之間,而不是重置。例如,如果我在測試1中添加兩個項目,那麼這兩行的HSQL中的id值是1和2.在我的設置中,我然後銷燬數據庫。在測試2中,我添加一個項目,ID爲3,而不是返回1.我使用Spring作爲事務管理器並連接所有依賴關係。有沒有人知道可能是什麼原因造成的?自動增量與HSQL,休眠和彈簧和測試

我不想檢查id本身,但我確實發現這很煩人。

在此先感謝

回答

1

這是預期的。自動遞增ID由數據庫處理,因此,除非您在每次測試之前刪除表並重新創建它們(您不應該這樣做),否則ID將不斷增加。

只是不要在測試中依賴ID的絕對值。從設置測試用例時創建的實體中獲取ID值。

0

嘗試Unitils。這些工具可以刪除數據庫表併爲每個測試用例自動重新創建它們。當然,你有其他的選擇,你可以選擇。這些是從here採取

  • CleanInsertLoadStrategy:將數據集,去除目前存在於數據集中
  • InsertLoadStrategy指定的表中的所有數據後:只需將數據集中到數據庫
  • RefreshLoadStrategy:使用數據集的內容'刷新'數據庫的內容。這意味着更新現有行的數據並插入不存在的行。任何在數據庫中但不在數據集中的行都不受影響
  • UpdateLoadStrategy:使用數據集的內容更新數據庫的內容。這意味着更新現有行的數據。如果數據集包含不在數據庫中的記錄(即具有與主鍵列相同的值的記錄),則失敗。

可能您覺得這個工具有用。