gpt4 book ai didi

java - 如何在课后回滚事务(使用 TestNg 和 Spring)?

转载 作者:行者123 更新时间:2023-11-29 07:48:10 24 4
gpt4 key购买 nike

假设我们有下一个测试:

@ContextConfiguration(classes = {MyDaoContext.class})
public class MyDaoTest extends AbstractTransactionalTestNGSpringContextTests {

@Autowired
private MyDao dao;

@Test
public void insertDataTest() {
// insert data here and test something
}

@Test(dependsOnMethods = "insertDataTest")
public void modifyPreviouslyInsertedDataTest() {
// get previously inserted data and test something
}
}

第二次测试将失败,因为当我们完成第一次测试时,插入的数据已经消失。有没有办法在所有测试完成后回滚事务?

最佳答案

每个测试都在自己的事务中运行,并在最后回滚。您可以通过将 @Rollback(false) 添加到您的第一个测试来调整它。

现在的问题是 insertDataTest 的事务已经完成,因此您应该删除它手动创建的内容。为此,您扩展的类具有多个实用方法,例如 deleteFromTablesdeleteFromTableWhere

理想情况下,这应该在 @AfterClass 或其他内容中进行。

但这不是我会做的。我会分解出由 insertDataTest 在共享实用程序中插入的数据。这样,您就可以在第二次测试中再次调用它并删除 dependsOnMethods。不建议具有此类依赖性,因为您无法单独运行该测试。

关于java - 如何在课后回滚事务(使用 TestNg 和 Spring)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624985/

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