@SpringBootTest 的一次性配置
One off configuration for a @SpringBootTest
我如何 bootstrap 我的 Spring Boot 2 集成测试,以便在所有这些测试中我可以拥有一组配置,这些配置预先为测试数据库植入一些测试数据,这些数据可以是在所有集成测试中使用?
假设您正在使用 h2 测试数据库。
我的 src/test/resources/application.properties 文件有:
spring.jpa.hibernate.ddl-auto=create-drop
您需要具有以下结构的配置文件。 (这是位于文件夹 src/test/java 内的配置示例):
@Profile("test")
@Configuration
public class H2Config {
@Autowired
private DataSource datasource;
@PostConstruct
public void loadSQL() throws Exception {
ScriptUtils.executeSqlScript(datasource.getConnection(), new ClassPathResource("/sql/load_database.sql"));
}
}
文件'load_database.sql':(完整路径为/src/test/resources/sql/load_database。sql)
CREATE OR REPLACE TABLE OPER_DISPN(
ID NUMBER NOT NULL,
DT_VCTO_OPER DATE NOT NULL
);
INSERT INTO OPER_DISPN(ID,DT_VCTO_OPER) VALUES (1,TO_DATE('2018/09/21', 'yyyy/mm/dd'));
如果您正在使用映射实体(使用@Entity)(使用 create-drop),则不需要 'CREATE TABLE' 部分。
现在,您所有的集成测试都已插入脚本数据
编辑:(我的测试结构) 我在 github 创建了我的示例应用程序。请查看测试结构和 运行 测试:
TNotMappedRepository.testLoadDataFind()
PersonRepository.testLoadDataFind()
我如何 bootstrap 我的 Spring Boot 2 集成测试,以便在所有这些测试中我可以拥有一组配置,这些配置预先为测试数据库植入一些测试数据,这些数据可以是在所有集成测试中使用?
假设您正在使用 h2 测试数据库。
我的 src/test/resources/application.properties 文件有:
spring.jpa.hibernate.ddl-auto=create-drop
您需要具有以下结构的配置文件。 (这是位于文件夹 src/test/java 内的配置示例):
@Profile("test")
@Configuration
public class H2Config {
@Autowired
private DataSource datasource;
@PostConstruct
public void loadSQL() throws Exception {
ScriptUtils.executeSqlScript(datasource.getConnection(), new ClassPathResource("/sql/load_database.sql"));
}
}
文件'load_database.sql':(完整路径为/src/test/resources/sql/load_database。sql)
CREATE OR REPLACE TABLE OPER_DISPN(
ID NUMBER NOT NULL,
DT_VCTO_OPER DATE NOT NULL
);
INSERT INTO OPER_DISPN(ID,DT_VCTO_OPER) VALUES (1,TO_DATE('2018/09/21', 'yyyy/mm/dd'));
如果您正在使用映射实体(使用@Entity)(使用 create-drop),则不需要 'CREATE TABLE' 部分。
现在,您所有的集成测试都已插入脚本数据
编辑:(我的测试结构) 我在 github 创建了我的示例应用程序。请查看测试结构和 运行 测试:
TNotMappedRepository.testLoadDataFind()
PersonRepository.testLoadDataFind()