我目前正在测试我的Spring存储库并决定使用MariaDB服务器实例而不是内存中的Derby实例,因为在涉及数据库视图的测试中存在一些复杂性。
虽然测试最终确实没有错误和失败,但我注意到我没有在我的测试用例中添加@DatabaseTeardown
注释。所以我决定检查我的数据库中是否有从测试中删除的不需要的行,发现我的数据库与测试前一样空。
有人可以解释为什么会这样吗?
答案 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