2013-04-26 86 views
0

我們運行junit測試來測試我們的java代碼庫。每個測試都會讀/寫一些數據到一個mysql數據庫(可能有多個表)。看起來,這些測試留下的數據會干擾在它之後運行的測試。是否有可能在每次單元測試結束時放棄/回滾測試所做的所有更改?在java中回滾嵌套事務

我們使用仙人掌框架在glassfish應用服務器上測試ejbs。 ejbs可以調用可以讀取/寫入數據庫的AS中的代碼。

我們使用hibernate和jdbc與數據庫進行通信。

+0

是你的應用程序的三層應用程序(控制器,服務和道數,即)?你用什麼來訪問數據庫(hibernate,jpa,jdbc)? – 2013-04-26 21:10:17

+0

你如何管理交易? HibernateTransactionManager或Container JTA? – 2013-04-26 21:31:47

+0

Mysql事務處理:http://dev.mysql.com/doc/refman/5.0/en/commit.html – 2013-04-26 21:37:03

回答

0

一個可能的解決辦法是用一個簡單的數據庫腳本你可以每次測試運行後,每次測試後重設數據庫,但這消耗的時間了很多。

如果您正在運行集成測試,那麼您將使用真正的EJB,對此無能爲力,因爲在測試開始和結束時讓他們理解起來會很複雜。對於一個簡單的操作,你可以強制一個異常來引起回滾,但是如果你在單個測試中使用多於一個事務,這將不起作用。