У меня есть приложение 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
Есть ли другие способы сделать это?Ни одно из решений, которые я смог найти, не сработало для меня.