如何制作jUnit4测试用例类Spring测试用例类?
我有一个 jUnit4 测试用例类(扩展 TestCase)。我正在测试一些具有 Spring DI 和 Hibernate 的代码。不知何故,当我执行测试时,看起来有些内部事务正在回滚我的测试更改。我正在使用 HibernateTemplate 删除一条记录,但数据库中没有删除任何内容。我得到了一个建议,通过将我的类设置为 Spring 测试类(使用 Spring Test Runner )并在方法调用之前使用 @Transactional 属性,使我的测试用例具有事务性。有人可以告诉我如何制作我的 Junit4 测试类 Spring 测试类吗?我需要什么配置以及要扩展哪个类?
提前致谢。
I have a jUnit4 test case class ( extends TestCase). I am testing some code having Spring D.I and Hibernate. Somehow when i execute test ,looks like some internal transactions are rolling my test changes back. I am deleting a record using HibernateTemplate but nothing is getting deleted in database. I got a suggestion to make my test case transactional by making my class a Spring test class( using Spring Test Runner ) and use @Transactional attribute before method call. Can somebody please tell how can i make my Junit4 test class Spring test class? What configs do I need and which class to extend?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
扩展
AbstractTransactionalJUnit4SpringContextTests
或将这些注释添加到您的测试类中:Extend
AbstractTransactionalJUnit4SpringContextTests
or add these annotations to your test class:扩展AbstractJUnit4SpringContextTests。我强烈建议详细阅读测试章节。
Extend
AbstractJUnit4SpringContextTests
. I highly recommend detailed reading of Testing chapter.有关 Spring 测试的所有内容在参考文献 中都有详细解释文档。
您遇到的现象是由于当测试用例类用
@Transactional
注释时,Spring 自动将测试方法包装在仅回滚事务中。这有一定的好处:您不会在测试期间损坏数据库,并且每个测试都对相同的数据进行处理,因此您不会引入测试间的依赖关系。Everything about Spring testing is thoroughly explained in reference documentation.
The phenomenon you are experiencing is due the fact that Spring automatically wraps test methods in rollback-only transactions when test-case class is annotated with
@Transactional
. This has certain benefits: you won't corrupt your database during the test and each test works on the same data, so you are not introducing inter-test dependencies.