为什么我的数据库没有被来自 Spring DBUnit 测试的工件弄得乱七八糟?

Why isn't my database cluttered with artifacts from my Spring DBUnit tests?

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

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

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

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

检查这个 Whosebug 答案 -

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