使用H2 DB进行Spring / Hibernate集成测试

时间:2013-04-18 22:51:04

标签: spring hibernate integration-testing h2

我正在构建一个Spring / Hibernate / Postgres api,它运行正常。我想在内存H2 DB中编写集成测试。我知道如何创建test-applicationContext。但是我在制作表格时遇到的问题很少。

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:mem:processdb;INIT=RUNSCRIPT FROM 'classpath:create.sql'" 
        />
</bean>

现在create.sql有一个sql查询来创建所需的模式和表。但Hiberate应该照顾它,我想我不必使用查询来创建表,hibernate应该从模型注释中处理它吗?我在persistence.xml中定义了所有内容,但最后它说无法找到表“user”。任何人都可以建议我如何在集成测试中创建表格或指向正确的方向,请? 感谢

1 个答案:

答案 0 :(得分:1)

您缺少jdbc连接字符串上的close_delay标志。如果没有这个,H2会在每次释放最后一个连接时关闭数据库。因此,在创建之后直接丢失模式就是您的情况。

jdbc:h2:mem:processdb;DB_CLOSE_DELAY=-1