@SpringBootTest的一次性配置

时间:2018-11-18 21:41:05

标签: java spring-boot integration-testing

如何引导我的Spring Boot 2集成测试,以便在所有这些测试中,我可以拥有一组配置,这些配置可以在测试数据库中预先植入一些可以在所有集成测试中使用的测试数据?

1 个答案:

答案 0 :(得分:3)

假设您正在使用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),则不需要“创建表”部分。

现在,您所有的集成测试都插入了脚本数据

编辑:(我的测试结构)我已经在github上创建了示例应用程序。请查看测试结构并运行测试:

TNotMappedRepository.testLoadDataFind()
PersonRepository.testLoadDataFind()

Github:https://github.com/thiagochagas/insert-data-tests