在我的 Spring 项目中,我使用 JUnit4 运行某些测试用例。我使用 @Transactional 删除测试用例期间对数据库所做的任何更改,以便新的测试用例获得相同的初始数据库状态。问题是,在我的一个测试用例中,我在数据库中插入了一些值,然后在同一测试中再次使用它们。看起来 @Transactional 甚至在测试用例完成之前就删除了条目,因此我的测试没有按预期运行。我该如何解决这个问题?
是这样的
@Test()
@Transactional
// Add entries to db and do some asserts
// Use those entries to do some more asserts
}
第二部分不起作用,因为条目消失了。有人可以帮忙吗?预先感谢!
最佳答案
您应该只在测试代码中执行此操作,而不是在生产代码中执行此操作
手动操作事务通常不是一个好主意,但对于测试来说应该没问题,你只需要这样做:
@Test()
@Transactional
// Add entries to db and do some asserts
sessionFactory.getCurrentSession().flush()
sessionFactory.getCurrentSession().clear()
// Use those entries to do some more asserts
}
方法可以不同..但你可以看到这个想法..
关于java - JUnit4:@Transactional 即使在测试用例完成之前也会删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39698637/