繁体   English   中英

Spring Boot用于不同的H2测试的不同data.sql文件

[英]Spring Boot different data.sql files for different h2 tests

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class TaskProviderTest {
}

我正在使用在属性文件中配置的H2数据库

spring.datasource.url=jdbc:h2:mem:testdb;MODE=PostgreSQL
spring.datasource.platform=h2
spring.jpa.hibernate.ddl-auto=none
spring.datasource.continue-on-error=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create-drop

我正在使用schema.sql和data.sql文件进行单元测试。 这两个脚本均在测试启动时执行。

无论如何,对于不同的Junit测试用例,是否要使用不同的data.sql文件?

尝试使用EmbeddedDataSource并从代码中的方法进行配置。 下面的代码演示了如何使用2个sql脚本创建数据源

@Bean
public DataSource dataSource() {
    final EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();

    return builder
            .setType(EmbeddedDatabaseType.HSQL)
            .addScript("sql/create-db.sql")
            .addScript("sql/fill-db.sql")
            .build();
}

您可以使用Spring的EmbeddedDatabaseBuilder在单元测试的setUp()方法中构造数据库,从而为不同的测试提供不同的data.sql脚本。

例:

public EmbeddedDatabase database(String dataScript) {
    return new EmbeddedDatabaseBuilder().
            setType(H2).
            addScript("schema.sql").
            addScript(dataScript).
            build();
}

参考:

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseBuilder.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM