Spring / DBUnit不会回滚事务直到测试结束

时间:2017-04-27 16:49:08

标签: java unit-testing spring-boot transactions dbunit

我们正在将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注释。请注意,托管此单元测试的班级有DependencyInjectionTestExecutionListenerTransactionDbUnitTestExecutionListener注释。

0 个答案:

没有答案