Spring Data Jpa。如何从特定测试类中运行单元测试来清理存储库中的数据?

时间:2015-04-28 07:31:12

标签: spring unit-testing jpa spring-data-jpa

我对使用spring data jpa写的持久性东西的单元测试有问题。

对于特定的存储库,我有一个单元测试,以确保一切正常。我也有集成测试。当我为特定测试类运行它时,每个测试都会通过。但是当我运行一整套测试时,我得到了很多功能,因为我从以前的测试中将记录插入到DB中。

当然在每个测试类中我都可以添加@After方法来清理每个数据,但我想问一下,在没有添加@After方法的情况下从特定测试类运行测试之前清除DB中的所有数据是否可行?

最诚挚的问候。

1 个答案:

答案 0 :(得分:2)

使用Spring的事务测试支持确保在每次测试后回滚数据库更改:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html#testcontext-tx

  

访问真实数据库的测试中的一个常见问题是它们的影响   关于持久性存储的状态。 即使您正在使用   开发数据库,​​状态的变化可能会影响未来的测试。   此外,许多操作 - 例如插入或修改持久性   数据 - 无法在交易之外执行(或验证)。

     

TestContext框架解决了这个问题。默认情况下   框架将为每个测试创建和回滚事务。