SpringBoot - тестирование с базой данных Flyway и H2 - PullRequest
0 голосов
/ 28 августа 2018

Я пишу приемочные тесты с Cucumber, и я хочу использовать базу данных H2 для тестов.

Приложение-test.properties выглядит так:

server.port:8090

spring.jpa.database=H2
spring.database.driverClassName=org.h2.Driver
spring.datasource.url:jdbc:h2:mem:database_user;DB_CLOSE_ON_EXIT=FALSE
flyway.locations=classpath:resources/db/migration
flyway.enabled=true

spring.datasource.username:SA
spring.datasource.password:

spring.h2.console.enabled=true
spring.jpa.show-sql=true

security.basic.enabled:false
spring.application.name=userService

В каталоге ресурсов / db /igration у меня есть файл sql со следующими сценариями:

create table user_image(
 id int unsigned not null AUTO_INCREMENT,
 url varchar(1000) not null,
 s3_key varchar(200) not null,
 PRIMARY KEY (id)
);


create table user (
    id int unsigned not null AUTO_INCREMENT,
    email varchar(50) not null,
    password varchar(100) not null,
    first_name varchar(50) not null,
    last_name varchar(50) not null,
    description varchar(50),
    phone_number varchar(50),
    user_image_id int unsigned,
    need_refresh_pass boolean not null,
    PRIMARY KEY (id),
    CONSTRAINT fk_user_image FOREIGN KEY (user_image_id)
    REFERENCES user_image(id)
);

Но когда я запускаю тесты, H2 создает схему с форматом по умолчанию вместо использования сценариев:

enter image description here

Как видите, все VARCHAR создаются с размером 255, а не с реальным значением.

Не могли бы вы помочь мне интегрировать пролетный путь с H2?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

1- Убедитесь, что ваше поколение DDL в спящем режиме отключено:

spring.jpa.hibernate.ddl-auto=none

2- Убедитесь, что имя вашего сценария миграции SQL соответствует правилам flyway. т.е.

V1__create_user_table_for_test.sql
0 голосов
/ 28 августа 2018

Flyway не обнаружил никаких миграций, и Hibernate создал таблицы из ваших сущностей.

Местоположение должно быть:

# spring-boot 2.x
spring.flyway.locations=classpath:db/migration

# spring-boot 1.5.x
flyway.locations=classpath:db/migration

Это значение по умолчанию, поэтому его можно опустить.

...