【发布时间】:2013-11-08 10:24:09
【问题描述】:
我有以下问题:
我有一个预先填充了大量测试数据的数据库。每次测试运行后,我想丢弃测试过程所做的更改。我已经尝试使用嵌入式 H2 DB 来做到这一点。我会用原始文件覆盖数据库文件,问题就会得到解决。但是出现了另一个问题:H2 不支持多线程而不作为服务器运行。
之后我查看了 HSQLDB。如果我理解正确,如果它用作普通文件数据库(不是内存中),它仍会将数据库的内容加载到内存中,并在一段时间后将更改的内容保存到磁盘。
是否有可能将文件 DB 读入内存,在那里使用它并在最后丢弃任何更改?这将是完美的。使用回滚的解决方案也很棒。
谢谢, 丹尼尔
【问题讨论】:
-
为什么缺少多线程支持是个问题?
-
因为应用程序严重依赖多线程,没有它就无法工作。有时超过 20 个线程同时访问数据库。如果它在测试中运行缓慢,它仍然可以,但它应该可以工作。
-
好的,但是无论您选择哪种数据库解决方案,所有线程都必须等待数据库在测试运行结束时“恢复”,对吧?
-
没问题,CI 会退出应用程序,回滚并再次启动应用程序以进行进一步测试。
-
是的,所以重置数据库并不是真正的问题,一般来说只是针对您的应用程序。我对此感到困惑。
标签: testing persistence automated-tests hsqldb h2