我正在为一个系统编写测试,其中包含几个使用REQUIRES_NEW注释的方法。如何编写测试并自动清理?目前,我必须手动清理,因为在测试结束之前已经提交了几个事务。
在测试之前是否有用于拍摄数据库快照的库,并在测试后应用该快照?
谢谢!
答案 0 :(得分:0)
查看spring TestContext framework
框架将为每个测试创建并回滚事务
- 编辑 -
我还没有找到解决方案,也许是 PROPAGATION_REQUIRES_NEW 打算用于:启动一个完全独立的事务,并且可以使用外部事务独立提交或回滚。
可能的解决方法可能是在@BeforeTransaction和@AfterTransaction
中的测试之间重新填充数据库您的参考资料有open ticket
- 编辑 -
拍摄db的快照非常复杂,取决于底层数据库。我还没有找到一个现成的库或工具来满足您的需求。即使有任何东西,也可能太重,只能用于测试目的。
spring提供Embedded database support,但它仅限于嵌入式数据库,如h2,并且每次创建一个全新的数据库并在测试后将其销毁
所以,我想你必须自己恢复测试期间更新的表/行。