如何制作jUnit4测试用例类Spring测试用例类?

发布于 2024-10-18 21:08:41 字数 314 浏览 4 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千年*琉璃梦 2024-10-25 21:08:42

扩展 AbstractTransactionalJUnit4SpringContextTests 或将这些注释添加到您的测试类中:

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

Extend AbstractTransactionalJUnit4SpringContextTests or add these annotations to your test class:

@TestExecutionListeners(TransactionalTestExecutionListener.class)
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class })
清风无影 2024-10-25 21:08:42

扩展AbstractJUnit4SpringContextTests。我强烈建议详细阅读测试章节。

Extend AbstractJUnit4SpringContextTests. I highly recommend detailed reading of Testing chapter.

青春如此纠结 2024-10-25 21:08:42

有关 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文