1

我正在用几种方法为系统编写测试,这些方法用 REQUIRES_NEW 注释。如何编写测试并进行自动清理?目前,我必须手动清理,因为在测试结束之前已经提交了几个事务。

是否有任何库可以在测试前拍摄数据库快照并在测试后应用该快照?

谢谢!!

4

1 回答 1

0

查看Spring TestContext 框架

框架将为每个测试创建和回滚事务

- 编辑 -

我还没有找到解决方案,也许这就是PROPAGATION_REQUIRES_NEW的意图:启动一个完全独立的事务,并且可以与外部事务独立提交或回滚。

一种可能的解决方法可能是在 @BeforeTransaction 和 @AfterTransaction 的测试之间重新填充数据库

有一张开票供您参考

- 编辑 -

为数据库拍摄快照非常复杂,并且取决于底层数据库。我还没有找到满足您需求的现成库或工具。即使有,也可能太重而不能仅用于测试目的。

spring提供嵌入式数据库支持,但仅限于h2之类的嵌入式数据库,每次创建一个全新的数据库并在测试后销毁它

所以,我想你必须自己恢复测试期间更新的表/行。

于 2013-07-29T14:13:49.547 回答