我们正在将dbunit与spring boot和H2数据库一起用于本地单元/集成测试。在测试中,我们使用TransactionDbUnitTestExecutionListener
和@Transactional
注释,以便测试期间的事务不会回滚直到结束。
但是,我观察到如果在测试中我调用了Propogation.REQUIRES_NEW
的函数,则在函数返回后立即发生回滚,然后测试失败,因为它无法找到数据。
以下是示例代码
@Test
@Transactional
@DatabaseSetup("/Uploads.xml")
@Rollback(value = false)
fun testStampSidekiqJobId() {
uploadEntity = uploadService.stampSidekiqJobId(uploadEntity, "fakeJobId")
// test values
}
// here is the called function
@Transactional(propagation = Propagation.REQUIRES_NEW)
open fun stampSidekiqJobId(uploadEntity:UploadEntity, encodeJobId:String): UploadEntity {
我尝试过使用和不使用Rollback注释。请注意,托管此单元测试的班级有DependencyInjectionTestExecutionListener
,TransactionDbUnitTestExecutionListener
注释。