Одноразовая конфигурация для @SpringBootTest - PullRequest
0 голосов
/ 19 ноября 2018

Как я могу загрузить свои интеграционные тесты Spring Boot 2, чтобы у всех них был один набор конфигураций, который предварительно заполняет тестовую базу данных некоторыми тестовыми данными, которые можно использовать во всех интеграционных тестах?

1 Ответ

0 голосов
/ 19 ноября 2018

Предположим, вы используете тестовую базу данных h2.

Мой src / test / resources / application.properties * Файл 1004 * имеет:

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()

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

...