【问题标题】:Does DBUnit change the actual state of the database?DBUnit 会改变数据库的实际状态吗?
【发布时间】:2015-05-11 19:58:31
【问题描述】:
例如,在我为实际数据库设置数据源并使用@DatabaseSetup 将其设置为状态后,会发生以下哪种情况?
1) DBUnit 连接到实际数据库,删除所有内容,插入@DatabaseSetup 中指定的记录,测试用例然后回滚。
2) DBUnit 以某种方式基于数据源创建内存数据库,设置内存数据库。实际数据库中没有任何变化。
3) 魔法。
DBUnit 是如何工作的?
谢谢。
【问题讨论】:
标签:
spring
integration-testing
dbunit
spring-test-dbunit
【解决方案1】:
DBUnit 完全按照您的要求执行。如果您将它连接到真实数据库,那么是的,它将作用于真实数据库。如果你告诉它作用于内存数据库,那么它就会这样做。
如果您让它执行 CLEAN_INSERT,那么它将擦除您要求加载的数据集中指定的所有表中的所有数据,然后加载数据集,然后删除加载的数据集.它在开始时擦除的数据不会被放回原处。
如果您使用 DBUnit 进行测试,通常不会将其指向真实(即生产)数据库。相反,您会创建某种副本并将其指向。该副本可能是您的数据库的真实实例,内存中的某个内容,它可以填充虚拟数据或真实数据的副本。