Попытка запустить тесты в конфигурации свойств теста Spring Boot - PullRequest
0 голосов
/ 22 мая 2018

У меня есть приложение Spring Boot, которое обычно работает на Postgres DB, однако я хотел бы протестировать некоторые функции на встроенной базе данных H2.Я попытался аннотировать свои тестовые классы с помощью @TestPropertySource и пытался создать тестовые и dev-профили (отдельные файлы application.properties), но ни один из них, похоже, не работает.

Это мои application-test.properties

server.port=8080

spring.resources.add-mappings=true
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb;
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.properties.hibernate.default_schema=public

, которые сопровождаются моим тестом. Data.sql:

insert into people(first_name, last_name, id) values('John', 'Johnson', 8);
insert into vehicles(name, make) values ('Mustang', 'Ford');

Однако, даже если я аннотирую свой тестКласс, подобный этому:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
@TestPropertySource(locations = {"classpath:application-test.properties"})

Он все еще пытается запустить приложение с обычной БД Postgres и использует файл data.sql БД Postgres, а не тот, который указан выше.Если я переключаю обычный data.sql на тестовый, я получаю сообщение об ошибке:

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

Есть ли другие способы сделать это?Ни одно из решений, которые я смог найти, не сработало для меня.

...