2016-05-15 31 views
1

我正在使用JPA將我的Java對象存儲在數據庫中使用javadb。如何在沒有修改原始數據庫的情況下使用javadb測試jpa代碼?

現在我寫了JUnit測試來檢查對象是否被正確存儲並從javadb中刪除等。

問題是,在以前的測試中對數據庫的修改會影響後面的測試,更重要的是,顯然會修改我用於我的應用程序的數據庫。

我發現的一個解決方案是顛倒每個測試的交易,但由於我測試的幾個方法已經提交了他們的交易,我不認爲這對我有效。

我也想過創建備份,方法是將所有數據存儲在文件中,然後恢復數據庫,或者創建一個具有不同jdbc.url值的已創建persistence.xml(這將在某種程度上用於運行測試而不是原始)並創建一個單獨的數據庫。

但我不知道如何使這些解決方案工作或如果他們甚至是很好的解決方案。

任何人都可以向我解釋如何在運行這些測試時避免修改原始數據庫?

+0

對被測試代碼的修改是否讓該代碼不能提交可接受?這將允許測試決定是提交還是回滾。 –

+1

我建議有一個單獨的測試數據庫。你可以使用類似DBUnit的東西來填充每個測試的相關數據。 http://dbunit.sourceforge.net/ –

+0

這可能是如果沒有其他的方式來實現這一點,但我對抽象(該類實現的接口)的實際測試,這真的不希望改變什麼方法做。 – Wouter

回答

1

最終我只是使用maven與純粹的運行測試配置的不同JavaDB之外數據庫作爲解釋here一個單獨的persistence.xml。

由於時間限制,我沒有使用DBUnit作爲Alan Hay's comment,但這似乎也是一個有效的選項。

相關問題