gpt4 book ai didi

spring - 使用 REQUIRES_NEW 对事务方法进行单元测试并始终强制回滚

转载 作者:行者123 更新时间:2023-12-01 06:30:48 28 4
gpt4 key购买 nike

我想测试一种通过在循环中调用 DAO 将数据插入表中的服务方法。服务方法被注释为

@Transactional(propagation = Propagation.REQUIRES_NEW)

单元测试调用服务方法并用
@Transactional

现在我想告诉事务,它始终应该在最后进行回滚。我不想在测试运行后手动清理数据库。

@Rollback 和 EntityManager.getTransaction().setRollbackOnly() 不起作用。我认为原因是注释和 setRollbackOnly() 仅应用于由测试方法创建的事务,而不应用于由服务方法创建的事务。

有谁知道如何解决这个问题?

最佳答案

我认为不可能轻松回滚 REQUIRES_NEW 事务。 SpringTest 启动一个事务,它可以回滚它启动的事务。但不是内部开始的交易。

因此,您可能会退回到 REQUIRED 或编写测试以使其即使提交也能正常工作。如果选择后者,可以通过randomization实现测试隔离.

关于spring - 使用 REQUIRES_NEW 对事务方法进行单元测试并始终强制回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22093286/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com