Тест интеграции Spring Boot с использованием нескольких типов баз данных

В моем тесте мне нужен тест с разными базами данных (mysql, oracle и т. д.), И я хотел бы знать, возможно ли это с помощью SpringRunner.

Я использую аннотации @SqlGroup и @Sql, но я не обнаружил, как указать файлы скриптов (sql), соответствующие базе данных.

Пример:

@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:tenantBeforeTestRun.sql")

Эта аннотация настраивает мой тест для выполнения сценария для всех типов баз данных, но этот файл не работал в Oracle.

Вероятно, вам нужно предоставить свою конфигурацию и приложение загрузки Spring, чтобы знать, в чем проблема.

ypriverol 08.05.2018 21:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
1 553
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Аннотация @Sql позволяет вам определить SqlConfig, который содержит имя bean-компонента datasource. Затем вы можете определить множество компонентов источника данных с возможно разными драйверами и ссылаться на них из разных @Sql. Это может быть полезно: Spring Boot Multiple Datasource

@Sql(..., config = @SqlConfig(datasource = "db1", ...)

application.properties:

#first db
spring.db1.url = [url]
spring.db1.username = [username]
spring.db1.password = [password]
spring.db1.driverClassName = oracle.jdbc.OracleDriver

#second db ...
spring.secondDatasource.url = [url]
spring.secondDatasource.username = [username]
spring.secondDatasource.password = [password]
spring.secondDatasource.driverClassName = oracle.jdbc.OracleDriver

Затем где-то в классе @Configuration:

@Bean(name = "db1")
@ConfigurationProperties(prefix = "spring.db1")
public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
}

Другие вопросы по теме