【发布时间】:2015-04-26 00:02:21
【问题描述】:
如何让 Spring Boot 在测试类之间从头开始重新创建内存测试数据库?
我有几个用 @SpringApplicationConfiguration 和 @WebIntegrationTest 注释的本地集成测试,它们会改变数据库状态。我已经用@DirtiesContext 标记了每一个。我期待创建内存数据库的代码将成为ApplicationContext 生命周期的一部分,因此应该在任何后续测试中创建一个新的。
我可以在日志中看到 Flyway 正在尝试重新应用迁移,并认为它们已经完成,因为尚未清除数据库。
Spring Boot 是否在每个 ApplicationContext 之外创建内存数据库并在它们之间共享?有没有办法控制这种行为?
编辑
从 Maven 而不是 Eclipse 运行测试时,我也看到了奇怪的行为。我的一个数据库表正在 Maven 中更改状态,但在 Eclipse 中没有。这可能是 ClassLoader 问题吗?
【问题讨论】:
-
您希望在测试开始时完全重新创建数据库还是简单地恢复到初始状态?如果是后者,你不能使用@Rollback 来回滚更改吗?
-
感谢您的评论。我希望完全放弃它们,以便在测试之间实现最大程度的隔离。
-
对于像在测试之间重新创建数据库这样的事情,我过去使用过 dbunit。还有一个spring-dbunit integration。
标签: java spring spring-mvc spring-boot spring-test