使用H2数据库1.3.169测试java应用
我正在以两种不同的方式测试我的应用。
- 内存数据库是在与应用程序不同的进程中创建的。我启动 H2 控制台并从脚本创建数据库。所有测试均通过。
- 内存数据库在应用程序启动时在与应用程序相同的进程中创建。所有测试都在 Intellij IDEA 11.3 中通过。使用 Maven 2 测试某些测试失败(为一个实体创建、更新、删除,预期数据集与结果不匹配)。好像数据库没有更新。它不会每次都发生,有时构建成功。所有测试都经过验证,都适用于 Oracle 和 DB2。
问题的原因可能是什么?
最佳答案
当您默认配置与内存中 H2 DB 的连接时,会发生这种情况,例如:dbc:h2:mem:test
在那种情况下,DB 存在直到他至少有一个 Activity 连接。当最后一个连接关闭时,数据库也关闭了。取决于您使用/重用连接(可能是池化)和运行测试延迟的内容,您可能会遇到竞争条件并获得意想不到的结果。
可以通过连接参数 DB_CLOSE_DELAY=-1
来修复,这意味着 db 仅在 VM 死机时关闭。
这是有用的链接 http://www.h2database.com/html/features.html#closing_a_database
关于java - h2数据库测试maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14051566/