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

Maven HSQL单元测试——如何创建多个内存模式?,maven,junit,hsqldb,Maven,Junit,Hsqldb,我希望在web应用程序的DAO单元测试中使用hsql。web应用程序是针对mysql编写的,在同一个mysql数据库中使用三种不同的模式。某些模式与其他模式中的数据具有FK关系。如果我要进行单元测试,我必须能够对一个可以容纳多个模式的数据库执行 我知道HSQL支持多个模式,但我不知道如何配置HSQL以便为内存数据库设置多个模式。我了解到我可以在server.properties文件中定义多个模式,但是该文件需要位于调用java类的位置——junit.jar位置?如果是这样,我的JavaMaven

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

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

  • 运行内存中的hsql数据库以启动三个数据库
  • 在Maven应用程序中,我将把server.properties文件放在哪里
  • 我是否可以指示hsql在junit jar所在的位置以外的位置使用server.properties文件(这对我来说是一个showtupper)
  • 是否可以通过一个精心设计的JDBCURL为内存中的数据库配置多个模式
  • 我希望我能将模式从彼此中分离出来,但目前这是不可能的


    谢谢你的帮助

    HSQLDB支持同一数据库中的多个模式。外键可以引用来自不同模式的表。以下内容适用于最新的HSQLDB 2.2.6快照,该快照可从

  • 在运行测试之前,对每个模式执行
    createschema schemaname
  • 无论在何处,都可以在运行时在命令行参数上指定绝对路径。请参阅服务器上的HSQLD指南和JavaDoc
  • 不可以。您可以使用SQL语句来创建架构

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

    可以通过设置数据库名称来创建不同的数据库。默认情况下,它将数据库名称创建为testdb,但如果我们想要创建多个数据库,则显式地设置名称

    new EmbeddedDatabaseBuilder()
                    .setType(EmbeddedDatabaseType.HSQL).setName("DB_NAME")
                    .addScript("DDL.SQL") 
                    .addScript("DML.SQL")
                    .build();
    
    如果多次运行以下行,则可以看到数据库:

    DatabaseManagerSwing.main(new String[] { "--url", "jdbc:hsqldb:mem:" + dbnaes, "--user", "sa", "--password", "" });
    

    啊<代码>创建架构(不创建数据库)!很好,我已经插入了它,现在能够在内存中创建一个多模式数据库。谢谢你的帮助。在这个问题中没有提到或标记Spring框架