为什么我的数据库与我的Spring DBUnit测试中的工件混杂在一起?

时间:2016-11-01 03:15:20

标签: database spring testing dbunit

我目前正在测试我的Spring存储库并决定使用MariaDB服务器实例而不是内存中的Derby实例,因为在涉及数据库视图的测试中存在一些复杂性。

虽然测试最终确实没有错误和失败,但我注意到我没有在我的测试用例中添加@DatabaseTeardown注释。所以我决定检查我的数据库中是否有从测试中删除的不需要的行,发现我的数据库与测试前一样空。

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

正如您所说,在您的测试用例中使用@Transactional,其默认行为是测试是将整个测试封装在一个事务中并自动回滚它,从而确保您的数据库处于与测试之前相同的状态例。

检查此StackOverflow回答 - https://stackoverflow.com/a/9817815/1589165

Spring文档中记录了这一点 - http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-tx