我有以下情况:
@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