作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有下一个测试:
@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
的事务已经完成,因此您应该删除它手动创建的内容。为此,您扩展的类具有多个实用方法,例如 deleteFromTables
或 deleteFromTableWhere
。
理想情况下,这应该在 @AfterClass
或其他内容中进行。
但这不是我会做的。我会分解出由 insertDataTest
在共享实用程序中插入的数据。这样,您就可以在第二次测试中再次调用它并删除 dependsOnMethods
。不建议具有此类依赖性,因为您无法单独运行该测试。
关于java - 如何在课后回滚事务(使用 TestNg 和 Spring)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624985/
我是一名优秀的程序员,十分优秀!