h2数据库测试maven

时间:2012-12-27 08:23:27

标签: java database testing maven-2 h2

使用H2数据库1.3.169

测试java应用程序

我以两种不同的方式测试我的应用。

  1. 内存数据库是在与应用程序不同的进程中创建的。我启动H2控制台并从脚本创建数据库。所有测试都通过了。
  2. 在应用程序启动时,与应用程序在同一进程中创建内存数据库。所有测试均通过Intellij IDEA 11.3。使用Maven 2测试某些测试失败(创建,更新,删除一个实体,预期数据集与结果不匹配)。似乎数据库没有更新。它不会每次都发生,有时构建成功。所有测试都经过验证,所有测试均适用于Oracle和DB2。
  3. 问题可能是什么原因?

2 个答案:

答案 0 :(得分:2)

默认情况下配置与内存H2 DB的连接时会出现这种情况,例如:dbc:h2:mem:test

在这种情况下,DB存在,直到他至少有一个活动连接。当最后一个连接关闭时,DB也关闭。取决于您使用/重新使用连接(可能合并)和运行测试延迟,您可以获得竞赛条件并获得意外结果。

可以使用连接参数DB_CLOSE_DELAY=-1进行修复,只有当VM死亡时,db才会关闭。

这是helphul链接http://www.h2database.com/html/features.html#closing_a_database

答案 1 :(得分:0)

我知道你回答你的问题为时已晚。可能这可能会有所帮助。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="org.h2.Driver" />
  <property name="url" value="jdbc:h2:mem:testdb;INIT=create schema if not exists test\;runscript from 'classpath:scripts/sample.sql';**DB_CLOSE_DELAY=-1**"/>

除了尝试添加以下属性

<prop key="hibernate.hbm2ddl.auto">create</prop>      
<prop key="hibernate.connection.release_mode">auto</prop>

每次服务器启动时都会创建模式,完成后会删除。