2011-02-22 80 views
0

我有一個jUnit4測試用例類(延伸測試用例)。我正在測試一些具有Spring D.I和Hibernate的代碼。不知何故,當我執行測試,看起來像一些內部交易正在回滾我的測試變化。我正在使用HibernateTemplate刪除一條記錄,但沒有任何數據庫被刪除。我有一個提議通過使我班春測試類(使用Spring測試運行),使我的測試案例事務和方法調用之前使用@Transactional屬性。有人可以告訴我如何使我的Junit4測試類Spring測試類?我需要什麼配置以及要擴展哪個類?如何製作一個jUnit4測試用例類Spring測試用例類?

在此先感謝。

+0

如果「擴展的TestCase」,這是一個JUnit 3.x的測試類。 JUnit 4.x類不需要繼承任何東西,它們使用@Test註釋。 – 2011-02-22 22:29:58

回答

3

擴展AbstractTransactionalJUnit4SpringContextTests或這些註釋添加到您的測試類:

@TestExecutionListeners(TransactionalTestExecutionListener.class) 
@Transactional 
@RunWith(SpringJUnit4ClassRunner.class) 
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, 
DirtiesContextTestExecutionListener.class }) 
+0

+1用於指出已爲事務支持配置的AbstractTransactionalJUnit4SpringContextTests。 – Ritesh 2011-02-22 22:38:20

0

擴展AbstractJUnit4SpringContextTests。我強烈建議詳細閱讀Testing一章。

0

一切有關彈簧試驗參考documentation徹底解釋。

您所遇到的現象是由於這樣的事實,當測試用例類與@Transactional註解是Spring自動換行僅回滾事務的測試方法。這有一些好處:在測試期間不會損壞數據庫,並且每個測試都使用相同的數據,因此您不會引入測試之間的依賴關係。