首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次测试运行后重置DB

每次测试运行后重置DB
EN

Stack Overflow用户
提问于 2013-10-29 10:15:00
回答 2查看 679关注 0票数 0

我有以下问题:

我有一个数据库预填充了大量的测试数据。每次测试运行之后,我想放弃测试过程所做的更改。我已经尝试用嵌入式H2 DB来实现这一点。我只需要用原始文件覆盖DB文件,问题就会解决。但另一个问题出现了: H2不支持多线程而不作为服务器运行。

之后,我查看了HSQLDB。如果我正确理解它,如果它被用作普通文件DB (而不是内存中的),它仍然会将DB的内容加载到内存中,并在一段时间后将更改后的内容保存到磁盘上。

是否有可能只将文件DB读入内存,在内存中使用它,并在结束时丢弃任何更改?这就太完美了。使用回滚的解决方案也会很棒。

谢谢,丹尼尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 11:35:07

对于H2数据库:

  • 要从脚本加载数据库, to the database URL。还可以从类路径中的资源加载脚本;为此,将~/create.sql替换为classpath:/com/acme/init/create.sql。如果您对这些更改不感兴趣,可以在内存中数据库(jdbc:h2:mem:test;...)的组合中使用这种方法。
  • 若要在多线程模式下使用H2数据库, to the database URL.这适用于所有模式(内存中、嵌入式、客户机/服务器).
票数 1
EN

Stack Overflow用户

发布于 2013-10-29 17:23:26

HSQLDB为这种使用提供了一个选项。

创建测试数据库后,执行关机。您将有一个.properties和.script文件。在.properties文件中添加以下一行:

代码语言:javascript
复制
files_readonly=true

然后使用这个数据库进行测试。当应用程序退出时,不需要回滚或任何特殊操作。

或者,将其附加到测试应用程序的连接URL,;files_readonly=true

见“指南”本章:

mem

对于多线程应用程序测试,数据库事务模型通常是MVCC,您可以在原始数据库中设置它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19655263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档