2012-02-06 59 views
0

我想知道是否有人在使用jeeunit(或任何其他java ee應用程序測試框架)時,在每次測試之前清除數據庫內容方面是否成功?如何在使用jeeunit進行每次測試後重置數據庫?

我已經嘗試使用@Transactional註釋描述在jeeunit文檔中它將回滾所有事務完成。但是有些情況(會話刷新),測試之間持續進行的更改會造成測試污染。

任何幫助/指導表示讚賞!

+0

試試看看這個主題:http://stackoverflow.com/questions/9110726/database-base-unit-testing-strategy-truncating-tables-between-unit-tests-test – 2012-02-06 08:26:47

+0

我一直希望堅持現有的測試框架... – netbrain 2012-02-06 08:57:10

+0

flush()不提交事務,所以我懷疑問題必須在其他地方,但除非提供更多上下文,否則很難說明問題。您可以附加一個測試用例到[此問題](http://code.google.com/p/jeeunit/issues/detail?id=20)嗎? – 2012-02-09 21:47:49

回答

0

我的解決方案是使用jeeunit和h2db,並在每次測試之前通過本地SQL強制刪除數據庫中的所有行。

1

既然你已經提到'任何其他的Java ee應用程序測試框架',我會建議研究一下Arquillian Persistence Extension以測試Java EE應用程序的單元。你可以找到如何在這裏使用它的教程:http://www.softwarepassion.com/java-ee-6-testing-with-arquillian-persistence-extension/

更多的Arquillian本身here

+1

正在使用alpha版本的最佳想法? – netbrain 2012-02-06 08:50:31

+0

1.0版本的快照已經可用:https://github.com/arquillian/arquillian-extension-persistence – Kris 2012-02-06 09:01:35

+1

但真正代表Alpha的是什麼?它全部壞了?在我看來,這意味着它顯然可能包含錯誤,但它可以讓社區根據API和功能調整方向。 – 2012-10-11 09:27:31

0

DbUnit是旨在協助這個確切的問題信息 - 他們的網站是here

0

Spring框架的AbstractTransactionalJUnit4SpringContextTests是另一個好的開始。

而且你可以在連接執行前設置autoCommit(false),並在代碼運行後回滾。

相關問題