У меня есть приложение весенней загрузки, с которым я пытаюсь интегрировать Flyway. Мое приложение запускается нормально и успешно выполняет миграцию на моей локальной БД при запуске, но мои тесты JUnit завершаются неудачно с сообщением IllegalState Failed to load ApplicationContext
.
Мое создание компонента приложения выглядит следующим образом:
@Bean(initMethod = "migrate")
@Profile(value = {"default", "memory"})
public Flyway flyway(DataSourceProperties dataSourceProperties) {
Flyway flyway =
Flyway.configure()
.dataSource(
dataSourceProperties.getUrl(),
dataSourceProperties.getUsername(),
dataSourceProperties.getPassword())
.locations("classpath:db/migrations")
.load();
return flyway;
}
И мой тестовый конфигурационный компонент выглядит следующим образом:
@Bean(initMethod = "migrate")
@Profile("memory")
public Flyway flyway(DataSourceProperties dataSourceProperties) {
Flyway flyway =
Flyway.configure()
.dataSource(dataSourceProperties.getUrl(),
dataSourceProperties.getUsername(),
dataSourceProperties.getPassword())
.locations("classpath:db/migration")
.load();
return flyway;
}
Свойства flyway / JPA / spring для моего тесты заключаются в следующем:
spring.datasource.url=jdbc:h2:mem:testdb;MODE=MySQL
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=some_username
spring.datasource.password=some_password
# ===============================
# JPA / HIBERNATE / FLYWAY
# ===============================
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.flyway.enabled=false
Причина, по которой я включил flyway как false
в моей конфигурации тестов, заключается в том, что я не хочу, чтобы мои тесты выполнялись при миграциях с миграционных путей. Я просто хочу запустить их на моей Н2 в БД памяти, которая была создана / управляется hibernate в моих тестах. Когда я запускаю mvn test
, все мои тесты начинаются с ошибкой IllegalState Failed to load ApplicationContext
.
Кто-нибудь знает, что мне может не хватать в контексте создания / применения Бина для тестирования?
РЕДАКТИРОВАТЬ: Ошибка / трассировка стека :
[ERROR] testGetListLang(com.service.myservice.GetListLangTest) Time elapsed: 0 s <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in com.service.myservice.AppConfig: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Found non-empty schema(s) "PUBLIC" but no schema history table. Use baseline() or set baselineOnMigrate to true to initialize the schema history table.
Caused by: org.flywaydb.core.api.FlywayException: Found non-empty schema(s) "PUBLIC" but no schema history table. Use baseline() or set baselineOnMigrate to true to initialize the schema history table.