HSQL 单元测试——如何创建多个内存模式?

Joh*_*don 5 junit hsqldb maven

我想在 Web 应用程序的 DAO 单元测试中使用 hsql。该 Web 应用程序是针对 mysql 编写的,并在同一 mysql 数据库中使用三种不同的模式。某些模式与其他模式中的数据具有 FK 关系。如果我要进行单元测试,我必须能够针对可以保存多个模式的数据库执行。

我知道 HSQL 支持多个模式,但我不知道如何配置 hsql 为内存数据库设置多个模式。我读到我可以在 server.properties 文件中定义多个模式,但该文件需要位于调用 java 类的位置 - junit.jar 位置?如果是这样,我的 Java Maven 应用程序将很难支持。我怎么能够:

  1. 运行一个内存hsql数据库来启动三个数据库?
  2. 我应该将 server.properties 文件放在 Maven 应用程序中的什么位置?
  3. 我可以指示 hsql 在 junit jar 所在位置以外的位置使用 server.properties 文件吗(这对我来说是一个阻碍)?
  4. 是否可以仅通过欺骗的 jdbc url 为内存数据库配置多个模式?

我希望我能够理清彼此的模式,但目前这是不可能的。

感谢您的帮助!

fre*_*edt 4

HSQLDB 支持同一数据库中的多个模式。外键可以引用不同模式的表。以下内容适用于http://hsqldb.org提供的最新 HSQLDB 2.2.6 快照

  1. 在运行测试之前,请CREATE SCHEMA schemaname针对每个模式执行。
  2. 无论在哪里,您都可以在运行时在命令行参数上指定绝对路径。请参阅服务器上的 HSQLD 指南和 JavaDoc。
  3. 是的。
  4. 不。您使用 SQL 语句来创建架构。

请注意,您有两种运行 HSQLDB 的选项,一种是作为服务器,另一种是作为嵌入式数据库。如果是服务器,则必须在测试运行之前启动它。在这两种情况下,您都需要在测试之前连接到数据库并创建模式。