我对使用spring data jpa写的持久性东西的单元测试有问题。
对于特定的存储库,我有一个单元测试,以确保一切正常。我也有集成测试。当我为特定测试类运行它时,每个测试都会通过。但是当我运行一整套测试时,我得到了很多功能,因为我从以前的测试中将记录插入到DB中。
当然在每个测试类中我都可以添加@After方法来清理每个数据,但我想问一下,在没有添加@After方法的情况下从特定测试类运行测试之前清除DB中的所有数据是否可行?
最诚挚的问候。
答案 0 :(得分:2)
使用Spring的事务测试支持确保在每次测试后回滚数据库更改:
访问真实数据库的测试中的一个常见问题是它们的影响 关于持久性存储的状态。 即使您正在使用 开发数据库,状态的变化可能会影响未来的测试。 此外,许多操作 - 例如插入或修改持久性 数据 - 无法在交易之外执行(或验证)。
TestContext框架解决了这个问题。默认情况下 框架将为每个测试创建和回滚事务。