我想知道是否有人在使用jeeunit(或任何其他java ee應用程序測試框架)時,在每次測試之前清除數據庫內容方面是否成功?如何在使用jeeunit進行每次測試後重置數據庫?
我已經嘗試使用@Transactional註釋描述在jeeunit文檔中它將回滾所有事務完成。但是有些情況(會話刷新),測試之間持續進行的更改會造成測試污染。
任何幫助/指導表示讚賞!
我想知道是否有人在使用jeeunit(或任何其他java ee應用程序測試框架)時,在每次測試之前清除數據庫內容方面是否成功?如何在使用jeeunit進行每次測試後重置數據庫?
我已經嘗試使用@Transactional註釋描述在jeeunit文檔中它將回滾所有事務完成。但是有些情況(會話刷新),測試之間持續進行的更改會造成測試污染。
任何幫助/指導表示讚賞!
我的解決方案是使用jeeunit和h2db,並在每次測試之前通過本地SQL強制刪除數據庫中的所有行。
既然你已經提到'任何其他的Java ee應用程序測試框架',我會建議研究一下Arquillian Persistence Extension以測試Java EE應用程序的單元。你可以找到如何在這裏使用它的教程:http://www.softwarepassion.com/java-ee-6-testing-with-arquillian-persistence-extension/
更多的Arquillian本身here
DbUnit是旨在協助這個確切的問題信息 - 他們的網站是here
Spring框架的AbstractTransactionalJUnit4SpringContextTests是另一個好的開始。
而且你可以在連接執行前設置autoCommit(false),並在代碼運行後回滾。
試試看看這個主題:http://stackoverflow.com/questions/9110726/database-base-unit-testing-strategy-truncating-tables-between-unit-tests-test – 2012-02-06 08:26:47
我一直希望堅持現有的測試框架... – netbrain 2012-02-06 08:57:10
flush()不提交事務,所以我懷疑問題必須在其他地方,但除非提供更多上下文,否則很難說明問題。您可以附加一個測試用例到[此問題](http://code.google.com/p/jeeunit/issues/detail?id=20)嗎? – 2012-02-09 21:47:49