В моем тесте мне нужен тест с разными базами данных (mysql, oracle и т. д.), И я хотел бы знать, возможно ли это с помощью SpringRunner.
Я использую аннотации @SqlGroup и @Sql, но я не обнаружил, как указать файлы скриптов (sql), соответствующие базе данных.
Пример:
@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:tenantBeforeTestRun.sql")
Эта аннотация настраивает мой тест для выполнения сценария для всех типов баз данных, но этот файл не работал в Oracle.




Аннотация @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();
}
Вероятно, вам нужно предоставить свою конфигурацию и приложение загрузки Spring, чтобы знать, в чем проблема.