每次使用Spring Boot后java回滚事务
我使用的是BDD测试框架Cucumber和Spring Boot 2.5。 我想在每次事件发生后回滚事务或重置数据库。我使用的是H2数据库,由动态生成的数据填充。 我尝试了@Transactional,但它不起作用,@DirtiesContext的速度变慢了
你可以在下面搜索框中键入要查询的问题!
我使用的是BDD测试框架Cucumber和Spring Boot 2.5。 我想在每次事件发生后回滚事务或重置数据库。我使用的是H2数据库,由动态生成的数据填充。 我尝试了@Transactional,但它不起作用,@DirtiesContext的速度变慢了
# 1 楼答案
实现这一点的方法是使用
PlatformTransactionManager
在每个场景之前启动事务,并在每个场景之后回滚。这基本上就是TransactionalTestExecutionListener
在执行用@Transactional
注释的JUnit测试类时所做的事情在Cucumber中,可以使用
@Before
和@After
钩子来实现这一点。因为您可能不希望对每个场景都这样做,所以可以选择将钩子设置为有条件的,以便它们仅在以正确的方式标记场景时执行例如:
发件人:
https://github.com/cucumber/cucumber-jvm/tree/main/examples/spring-java-junit5