嵌入式H2数据库的Spring配置以进行测试
使用嵌入式h2数据源以及JUnit(可选),用于集成测试的Spring配置看起来如何?
我第一次尝试使用SingleConnectionDataSource基本上可以成功,但是在更复杂的测试中失败了,在该测试中您需要同时进行多个连接或暂停事务。我认为基于tcp的服务器模式下的 h2 可能也能正常工作,但这可能不是内存中临时嵌入式数据库最快的通信模式。
有哪些可能性及其优势/劣势?另外,如何创建表/填充数据库?
更新:让我们指定一些对于此类测试很重要的具体要求。
- 数据库应该是临时的并且在内存中
- 对于速度要求,该连接可能不应该使用tcp
- 如果我可以在调试过程中使用数据库工具检查数据库的内容,那就太好了
- 我们必须定义一个数据源,因为我们不能在单元测试中使用应用程序服务器数据源
回答:
由于我不知道是否有任何工具可以检查数据库,我认为一个简单的解决方案是使用支持HSQL,H2和Derby 的Spring嵌入式数据库(3.1.x docs,current docs)。 。
使用H2,你的xml配置如下所示:
<jdbc:embedded-database id="dataSource" type="H2"> <jdbc:script location="classpath:db-schema.sql"/>
<jdbc:script location="classpath:db-test-data.sql"/>
</jdbc:embedded-database>
如果你更喜欢基于Java的配置,则可以实例化DataSource这样的代码(注意EmbeddedDataBase
扩展了DataSource
):
@Bean(destroyMethod = "shutdown")public EmbeddedDatabase dataSource() {
return new EmbeddedDatabaseBuilder().
setType(EmbeddedDatabaseType.H2).
addScript("db-schema.sql").
addScript("db-test-data.sql").
build();
}
数据库表由db-schema.sql脚本创建,并用db-test-data.sql脚本中的测试数据填充。
不要忘记将H2数据库驱动程序添加到你的类路径中。
以上是 嵌入式H2数据库的Spring配置以进行测试 的全部内容, 来源链接: utcz.com/qa/428542.html