当前位置: 首页 > 知识库问答 >
问题:

Spring的TestNG回滚事务不工作

裴英锐
2023-03-14

在我的一般问题之后,我有一个使用SpringjdbcTemboard的特定问题,我想在下面每次执行DAO方法后回滚特定的测试方法。

添加@Transactional@Rollback(true)未能回滚插入

此外,在之前/之后获取连接并回滚也不会产生影响

@Test
@Transactional
@Rollback(true)
public void testInsertUser() {
    Assert.assertEquals(userDAO.insertUser(new User(55616103, true, true, false)), true);
}

我应该如何使用TestNG框架回滚单元测试?大多数答案使用JUnit的@RunTo(SpringJUnit4ClassRunner.class)

我未能使用TestNG自动接线jdbcTemboard

@Autowired
private JdbcTemplate jdbcTemplate;

但是成功地使用了SpringJUnit4ClassRunner和include配置类includes jdbcTemplate/DataStource

TestNG是否有使用Spring上下文执行的选项?

共有1个答案

燕琨
2023-03-14

解决方案是将AbstractTestNGSpringContextTest替换为AbstractTransactionalTestNGSpringContextTest

参考:Spring TestNG未事务性回滚

 类似资料:
  • 问题内容: 我正在使用TestNG 6.9.9来构建回归测试环境。但是遇到使用JUnit时从未遇到过的问题。在我看来,当每个测试用例完成时,如果测试方法在与调用方法相同的事务上下文中运行,则默认情况下将自动回滚每个数据的更改。但这似乎不是事实,而且我无法找出我的代码中是否有任何错误。请帮帮我。pom.xml中的属性,指示框架的版本 显然,它们都是最新的。 我的测试课: 创建一个实体实例,然后调用c

  • 我们有一个Spring事务回滚问题,其中回滚似乎不起作用 在用注释的服务层方法中,我调用三个不同的类来插入3条记录 中间插入从第四个表执行get以填充描述字段,但此get失败。我希望第一次插入会回滚,但它似乎没有发生 几点: 获取方法抛出运行时异常 我们使用和中定义的。Bean是在中创建的,它被导入到 在层 中没有 注释 我们已经使用了

  • 这很好,但并不总是在代码中抛出运行时异常。因此,我挖掘并发现如下所示的rollbackFor; 现在,我必须更改所有代码,以使用RollBackfor更改@Transactional。但是还有其他方法可以将所有@transaction advice属性更改为rollbackFor=exception.class吗?

  • -ZJ 以下是我在Application.Properties中的数据源设置:

  • 我有一个事务性方法,我想调用另一个可能引发RuntimeException的方法。 问题是,当引发异常时,事务被标记为rollbackOnly。 编辑: 我不认为这是重复指定@Transactional rollbackFor也包括RuntimeException,因为异常最终会被捕获。 问题可能类似,因为它也涉及事务和回滚。