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

时间:2016-11-24 14:50:17

标签: java spring h2

@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文件?

2 个答案:

答案 0 :(得分:1)

尝试使用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();
}

答案 1 :(得分:1)

您可以使用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