h2数据库测试专家

shp*_*ova 5 java database testing maven-2 h2

使用H2数据库1.3.169测试Java应用程序

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

  1. 内存数据库是在与应用程序不同的过程中创建的。我启动H2控制台并从脚本创建数据库。所有测试均通过。
  2. 应用程序启动时,将在与应用程序相同的过程中创建内存数据库。所有测试均通过Intellij IDEA 11.3。使用Maven 2测试某些测试失败(为一个实体创建,更新,删除,预期数据集与结果不匹配)。好像数据库没有更新。并非每次都发生,有时构建成功。所有测试都经过验证,并且都可以在Oracle和DB2上运行。

是什么原因引起的?

use*_*873 2

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

在这种情况下,DB 会一直存在,直到他至少有一个活动连接为止。当最后一个连接关闭时,数据库也关闭。根据您使用/重复使用的连接(可能是池化)和运行测试延迟,您可以获得竞争条件并获得意想不到的结果。

它可以通过连接参数来修复DB_CLOSE_DELAY=-1,这意味着数据库仅在VM死亡时才关闭。

这是有用的链接http://www.h2database.com/html/features.html#looking_a_database