[英]Insert data in h2 database through data.sql file before performing unit testing in spring boot
[英]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();
}
参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.