h2 - 使用 H2 数据库配置进行 Spring 测试

标签 h2 spring-test

我在生产环境中使用Oracle,我想使用H2进行测试。我可以打字;

<jdbc:embedded-database id="dataSource">
  <jdbc:script location="classpath:schema.sql"/>
  <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

所以我的表和脚本是自动创建的。但我无法设置该数据库的 URL 值。 (为了实现 H2-Oracle 兼容性,我应该在 url 部分添加 ;MODE=Oracle)

有办法实现这个目标吗?

或者只是相反的解决方案;

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:file:h2\db"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>        
</bean>

此时,我可以编辑 URL 部分,但是如何将默认测试脚本(创建和数据 sql)加载到此数据源?

最佳答案

该技术解决了问题;

<bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
</bean>

然后添加此标签和定义;

<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
    <jdbc:script location="classpath:testdb/schema.sql" />
    <jdbc:script location="classpath:testdb/data.sql" />
</jdbc:initialize-database>

关于h2 - 使用 H2 数据库配置进行 Spring 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171688/

相关文章:

java - 如何在 MockHttpServletRequest 中设置角色?

java - 将模拟 bean 注入(inject) AnnotatinConfigApplicationContext 失败

spring - 如何在 Spring Autowiring 之前让 DBUnit @DatabaseSetup 发生?

java - @ContextConfiguration 不随 Springockito 继承

java - 测试中自发启动 Spring Boot 上下文

grails - 如何使用H2内存数据库保存数据?

android - 将 H2 数据库与 Android 集成

playframework - Play 框架 Ebean BigDecimal 分数

java - 增加 @ElementCollection 中元素的大小

java - 未找到 H2 DB 中的序列