我正在用几种方法为系统编写测试,这些方法用 REQUIRES_NEW 注释。如何编写测试并进行自动清理?目前,我必须手动清理,因为在测试结束之前已经提交了几个事务。
是否有任何库可以在测试前拍摄数据库快照并在测试后应用该快照?
谢谢!!
框架将为每个测试创建和回滚事务
- 编辑 -
我还没有找到解决方案,也许这就是PROPAGATION_REQUIRES_NEW的意图:启动一个完全独立的事务,并且可以与外部事务独立提交或回滚。
一种可能的解决方法可能是在 @BeforeTransaction 和 @AfterTransaction 的测试之间重新填充数据库
有一张开票供您参考
- 编辑 -
为数据库拍摄快照非常复杂,并且取决于底层数据库。我还没有找到满足您需求的现成库或工具。即使有,也可能太重而不能仅用于测试目的。
spring提供嵌入式数据库支持,但仅限于h2之类的嵌入式数据库,每次创建一个全新的数据库并在测试后销毁它
所以,我想你必须自己恢复测试期间更新的表/行。