我有一个jUnit4测试用例类(扩展TestCase)。我正在测试一些具有Spring D.I和Hibernate的代码。不知何故,当我执行测试时,看起来一些内部事务正在推动我的测试更改。我正在使用HibernateTemplate删除记录,但没有在数据库中删除任何内容。我建议通过使我的类成为Spring测试类(使用Spring Test Runner)并在方法调用之前使用@Transactional属性来使我的测试用例处理事务。有人可以告诉我如何才能使我的Junit4测试类Spring测试类?我需要哪些配置以及要扩展哪个类?
提前致谢。
答案 0 :(得分:3)
扩展AbstractTransactionalJUnit4SpringContextTests
或将这些注释添加到测试类中:
@TestExecutionListeners(TransactionalTestExecutionListener.class)
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class })
答案 1 :(得分:0)
扩展AbstractJUnit4SpringContextTests
。我强烈建议您详细阅读Testing章节。
答案 2 :(得分:0)
有关Spring测试的所有内容都在参考documentation中进行了详细解释。
您遇到的现象是,当test-case类使用@Transactional
注释时,Spring会自动将测试方法包装在仅回滚事务中。这有一定的好处:在测试期间不会损坏您的数据库,并且每个测试都在相同的数据上工作,因此您不会引入测试间依赖性。