【问题标题】:How to rollback DB changes on a Spring project using Hibernate, JUnit 3.8 and DbUnit如何使用 Hibernate、JUnit 3.8 和 DbUnit 回滚 Spring 项目中的数据库更改
【发布时间】:2016-03-10 09:36:33
【问题描述】:

所以我有一个使用 Hibernate 作为 ORM 的 Spring 项目,不幸的是绑定到 JUnit 3.8(以支持旧的 JSFUnit 框架)。

作为单元测试的一部分,我希望访问数据库逻辑,同时在运行结束时保持我的测试数据库完好无损。

我认为 DbUnit 会很有用,我正在寻找一个集成所有这些技术的工作示例,从而为每个 JUnit 方法刷新测试数据。

我非常感谢任何帮助,特别是因为我已经花了很多时间查看在 JUnit 4(而不是 3.8)上运行的示例。谢谢!

编辑:我相信使用 Spring 的类 AbstractJUnit38SpringContextTests 是可行的方法,因为它是为 JUnit 3.8 制作的最新类,可以在这种情况下帮助我们。

【问题讨论】:

  • Afaik,如果您使用 @Transactional 和 Spring JUnit Runner,Spring 应该会自动识别它处于测试模式并回滚事务...
  • 是的,但据我所知,Spring JUnit Runner 适用于 JUnit 4,而我依赖于 JUnit 3.8。
  • 啊,是的,我的错。那里从来不需要 spring 的抽象类,但就文档而言,这似乎是要走的路......

标签: java spring hibernate junit dbunit


【解决方案1】:

我们在 Spring Framework 4.0 中放弃了对 JUnit 3.8 的支持。

但是,如果您仍在使用 Spring 3.2.x,则可以从 AbstractTransactionalJUnit38SpringContextTests 基类扩展。

由于您使用的是 DbUnit,您可能还对第三方 DbUnitTestExecutionListener 感兴趣。

问候,

Sam (Spring TestContext 框架的作者)

【讨论】:

  • 谢谢。我现在只需要一种更改 Spring Context 文件位置的方法。不幸的是,我的测试用例已经扩展了类 ServletTestCase(Apache Cactus 的),它与 JSFUnit 一起在 Eclipse 中运行的 Tomcat 上运行我的测试用例。因此,我无法扩展第二个类(例如 AbstractTransactionalDataSourceSpringContextTests 可能允许我通过覆盖名为“getConfigLocations”的方法来更改上下文)。很高兴我引起了你的注意:)
猜你喜欢
  • 2013-08-11
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2017-03-27
  • 2013-06-22
  • 2014-12-19
  • 2011-05-09
相关资源
最近更新 更多