嵌入式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

回到顶部