Spring集成测试中的@Sql正在暂停AFTER_TEST_METHOD的事务

Har*_*rry 5 java spring spring-mvc spring-test spring-transactions

我有以下情况:

  @Test
  @Sql(scripts = "before.sql" , executionPhase = BEFORE_TEST_METHOD, config = @SqlConfig(transactionMode = ISOLATED))
  @Sql(scripts = "cleanUp.sql", executionPhase = AFTER_TEST_METHOD , config = @SqlConfig(transactionMode = ISOLATED))
Run Code Online (Sandbox Code Playgroud)

我需要在测试开始之前提交测试数据(必须提交),然后清理该数据。

问题是,当执行 AFTER_TEST_METHOD 时,它会挂起当前事务以便创建一个新事务(因为隔离),因此如果我的 mockMvc.perform(...) 正在锁定测试数据,则测试无法完成,因为隔离的事务正在等待锁定。

如果我使用 INFERRED,则清理将重用从 Spring 事务管理器滚动烘焙的现有事务,因此 BEFORE_TEST_METHOD 提交的数据将保留。

有什么方法可以解决这个问题,我缺少一些配置吗?

谢谢。

PS我正在使用testNG