gpt4 book ai didi

java - 如何在Spring中为事务方法编写事务单元测试?

转载 作者:行者123 更新时间:2023-11-30 05:20:55 24 4
gpt4 key购买 nike

我的项目中的单元测试类扩展了一个 AbstractUnitTest 类,即 @Transactional。这些类中的测试在一些方法上运行,这些方法本身就是@Transactional

每当这些方法导致测试失败时,事务不会回滚,而是部分持久化(在测试环境中,通常它们以原子方式运行)。这阻止了我测试项目模块的事务行为。

更具体地说,我有一个 addList() 方法的单元测试。然而,在单元测试期间遇到异常时,输入列表将被部分添加并且不会回滚因为,测试本身在事务中运行(凭借AbstractUnitTest 交易)

AbstractUnitTest 中删除 @Transactional 后,测试工作正常。这种行为的原因是什么?如果单元测试类本身是事务性的,如何执行事务性方法的单元测试?

最佳答案

这取决于您的配置,我认为:如果您想启动事务,您需要为单元测试配置 TransactionManager。当您使用 Spring 时,请确保已配置该配置并定义了事务边界(开始/提交或回滚)以确保事务行为(出错时回滚)。

我的建议是无论如何使用 TransactionalTestExecutionListener 在每次测试后始终回滚:这样每个测试都是独立的,因为它始终使用相同的数据运行。

希望这有帮助。

贝佩

关于java - 如何在Spring中为事务方法编写事务单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59577563/

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