您可以使用 Derby In-memory-database 和 H2 in-memory-database。它们很好。但是 H2 的性能更好。H2 有一个 Web 控制台 GUI,而 Derby 有 Eclipse 插件 GUI。你可以试试看。我在项目中使用过它们。H2 数据库在 SO 中有一个标签,它的作者将在 SO 中为您提供支持。我认为 fredit 适合使用服务器模式而不是嵌入模式。但他的网址似乎不正确。至少它应该使用mem。对于 Derby,url 是 jdbc:derby://myhost:1527/memory:myDB;create=true。这是 H2 jdbc:h2:tcp://localhost/mem:db1 的示例 url。
您需要使用服务器模式,以便客户端可以从网络连接到它。您需要注意的一件事是,在内存模式下,因为它在内存中,当您的 java 进程结束时,JVM 不存在,DB 中的数据也会丢失。但对于测试,它成为一个优势。您不需要清除测试数据。
H2 有一个非常好的测试功能。它具有 SQL 支持,可以为 IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle 和 PostgreSQL 运行兼容的 SQL。这意味着即使您在 MS SQL Server 中使用特殊的 SQL,也可以在 H2 中获得相同的结果。我相信你会喜欢的。
链接
我知道 HSQL 有内存模式,但我没有使用它。
祝你好运。
更新
我相信如果您改为在测试用例中编写查询,它将返回结果。我在我的测试用例中做了很多。即使在嵌入模式下,只要您在测试用例中创建 JDBC 连接。如果你觉得不方便,你甚至可以将数据输出转储到文件中。但是你必须在你的测试用例中将数据加载到 HSQL 中,你可以使用 BeforeClass 来做。如果你不能这样做,你必须使用服务器模式。
服务器内存模式的 JDBC url 中的 hsql 似乎有点不同
有关详细信息,请参阅
http://hsqldb.org/doc/guide/guide.html#N108D2连接
您必须处理一些服务器配置。
@Rachel,我终于找到了一个链接来帮助您在内存模式下设置服务器模式。看这个。这有点复杂。
“在服务器模式下运行仅内存 HSQLDB”
笔记
第二个链接没有详细说明如何正确连接。所以试试第一个。