2014-01-29 44 views
0

我試圖加快運行我的集成測試套件。對於每個集成測試類,它都會在運行測試之前重新創建整個內存中的H2數據庫 - 這佔用了大部分時間。我正在測試的所有方法都在Spring/Hibernate堆棧中。加速集成測試套件

有沒有辦法避免爲每個測試重新創建數據庫,同時確保數據庫處於乾淨狀態?

我正在測試一些方法來啓動新的Hibernate事務的調用方法 - 所以不確定是否有可能在每次測試之前開始一個新的事務並將所有事情都回滾後。

+0

似乎從這篇文章http://stackoverflow.com/questions/5178708/how-to-rollback-nested-transactions-with-propagation-requires-new-in-integration有沒有簡單的方法來這樣做和最好的解決方案是在每次測試後重新創建數據庫。 – Glide

回答

1

這是使用@Transactional@RunWith(SpringJunit4TestRunner.class)時的默認行爲(回滾)。

有關完整信息,請參閱Integration Testing Chapter

+0

即使測試方法有\t @Transactional(propagation = Propagation.REQUIRES_NEW),測試是否回滾db? – Glide

+0

另外,如果我在每個測試的類級別放置'Transaction',是否會導致所有測試方法回滾? – Glide

+0

不; 'REQUIRES_NEW'啓動一個新的事務,在返回測試用例之前將會被提交。您需要在測試用例中添加補償更新以將其撤消。是的,類級別@ Transactional使所有測試方法成爲事務性的。 –