Пружинный загрузочный модуль Flyway Проверяет ошибки - IllegalState Не удалось загрузить ApplicationContext - PullRequest
0 голосов
/ 31 января 2020

У меня есть приложение весенней загрузки, с которым я пытаюсь интегрировать 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.
...