2010-05-31 50 views
2

這裏有一些事情我真的不喜歡的DbUnit:,有沒有比dbunit加載測試數據更好的方法?

1)您不能指定確切的訂貨插入,因爲DbUnit的按表名喜歡將你的插入,而不是由你在XML文件中定義的順序。當有記錄取決於其他表中的其他記錄時,這是一個問題,因此您必須在測試期間禁用外鍵約束......這實際上很糟糕,因爲這些外鍵約束將在生產中被觸發,而您的測試不會意識到他們!

2)他們似乎強迫你使用xml名稱空間來定義你的xml ......我真的不能打擾這樣做。我喜歡沒有任何名稱空間的data.xml。有用。但他們對於貶低它如此耿耿於懷。

3)創建不同的xml文件很難每個測試的基礎上,所以它實際上鼓勵爲您的整個應用程序創建數據。不幸的是,這個過程有點臃腫,一旦數據增長的大小和事情相互糾纏。必須有更好的方式將測試數據分成塊,而不必在所有測試中複製/粘貼大量測試數據。

4)在大xml文件中跟蹤id引用是不可能的。如果你有130個域名類,它就會變得撲朔迷離。這個模型根本不會縮放。

在Spring/Hibernate空間中是否存在不太臃腫和更好的東西? db單位已經受到了歡迎,我真的很想找更好的東西。

回答

0

對於1)看看您是否可以將約束條件定義爲可推遲(Oracle docs),支票將是延期直到交易提交。

對於其他人,考慮使用Factory方法,即使用Factory類,該類知道如何創建對象並將其插入數據庫中以用於測試目的。這可能會破壞測試的一些目的,因爲您依賴插入/更新代碼來使測試正常工作。

我發現工廠的方法工作正常,如果你足夠簡單。

相關問題