【问题标题】:What is the best way to launch HSQLDB for unit testing, when working with spring, maven and hibernate?使用 spring、maven 和 hibernate 时,启动 HSQLDB 进行单元测试的最佳方式是什么?
【发布时间】:2011-03-04 10:07:50
【问题描述】:

在我的项目中,我可以成功测试数据库代码。我正在使用 Spring、Hibernate、HSQLDB、JUnit 和 Maven。

问题是目前我必须在运行测试之前手动启动 HSQLDB。使用所使用的技术自动启动 HSQLDB 的最佳方法是什么?

【问题讨论】:

标签: hibernate spring maven-2 junit hsqldb


【解决方案1】:

使用 JUnit,您可以使用以下注解创建在测试之前执行的方法:@Before

有关它的 JUnit 文档的链接在这里:JUnit FAQ - Test Fixtures

【讨论】:

    【解决方案2】:

    使用in-processin memory,建立连接时会从JDBC启动。

    【讨论】:

      【解决方案3】:

      你也可以运行一个 Ant 任务<startdb>

      https://forums.hibernate.org/viewtopic.php?f=6&t=984383&start=0

      【讨论】:

        【解决方案4】:

        我假设hsql 指的是HSQLDB

        将 JDBC 驱动程序(用于休眠等)的数据库 URL 配置为基于嵌入式内存的 HSQLDB 版本:

        jdbc:hsqldb:mem:myunittests
        

        然后 HSQLDB 的进程内版本会自动启动,将内容存储到内存中。无需启动任何外部服务器。

        【讨论】:

        • 谢谢,刚刚开始使用 HSQLDB。我遵循的教程配置为使用服务器。更改为在内存中使用解决了我的问题。
        【解决方案5】:

        我自己使用 hsql 的内存数据库来测试我的 DAO。因此,我不需要连接到任何外部数据库服务器或有任何网络连接。
        使用以下设置:

        jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver

        jdbc.url=jdbc:hsqldb:mem:DatabaseName

        还包括

        <property name="hibernateProperties">
           <props>
             <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
             <prop key="default_schema">test</prop>
             <prop key="hibernate.show_sql">true</prop>
             <prop key="hibernate.format_sql">false</prop>
             <prop key="hibernate.hbm2ddl.auto">create</prop>
           </props>
        </property>
        

        这将允许您使用内存数据库,并在执行测试之前自动从休眠对象创建数据库表。

        希望这会对您有所帮助。

        注意:

        当您的 DBA 在单个数据库中创建多个模式时,将使用“default_schema”属性。我在 postgres 中看到过这种情况,每个人都使用一个数据库 URL,但在此之下,每个应用程序都有单独的架构。

        通过使用默认架构属性,它允许您将架构名称与您的实体隔离开来。如果您针对不支持模式的 HSqlDB 运行测试并且您针对使用模式的数据库进行部署,这将特别有用。有一个空值只是意味着它默认回到数据库默认模式。

        【讨论】:

        • 属性“default_schema”对我造成了错误。删除该属性使其工作。
        猜你喜欢
        • 2019-02-12
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        相关资源
        最近更新 更多