Spring Boot Tests: как заменить DataSource на источник, управляемый TestcontainersJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot Tests: как заменить DataSource на источник, управляемый Testcontainers

Сообщение Anonymous »

Я протестировал свое приложение Spring Boot, используя локальную базу данных PGSQL. Теперь я хочу изменить тесты для использования PGSQL, работающего в тестовых контейнерах.
Я изменил свой класс конфигурации теста, чтобы использовать тестовые контейнеры и предоставить источник данных, подключающийся к порту, возвращаемому тестовыми контейнерами:

Код: Выделить всё

@TestConfiguration
@SpringBootApplication(exclude = { HazelcastAutoConfiguration.class })
@ComponentScan(basePackages = { "rw.gov.dgie.tm" })
@EntityScan("rw.gov.dgie.tm")
@EnableJpaRepositories(basePackages = { "rw.gov.dgie.tm" })
@EnableAsync(proxyTargetClass = true)
@EnableTransactionManagement
@Testcontainers
public class DbTestConfig {
@Autowired
private DataSource dataSource;

@SuppressWarnings("resource")
@Container
public static ComposeContainer dockerComposeContainer =
new ComposeContainer(new File("../docker/catalog-test.yml"))
.withExposedService("db-catalog", 5432)
.withRemoveVolumes(false)
.withLocalCompose(true)
.waitingFor("db-catalog", new DockerHealthcheckWaitStrategy());

@Bean
public DataSource dataSource(){
DriverManagerDataSource source = new DriverManagerDataSource();
String url = "jdbc:postgresql://" + dockerComposeContainer.getServiceHost("db-catalog", 5432) + ":" + dockerComposeContainer.getServicePort("db-catalog", 5432) + "/db-catalog";
source.setDriverClassName("org.postgresql.Driver");
source.setUrl(url);
source.setUsername("sa");
source.setPassword("sa");
return source;
}
}
Я использую следующий файл application-test.yml:

Код: Выделить всё

  datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/db_catalog
username: db_catalog
password: qwerty
hikari:
poolName: Hikari
auto-commit: false
jpa:
show-sql: true
generate-ddl: true
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
ddl-auto: update
generate_statistics: false
Однако при запуске теста, который был успешно выполнен с локальной БД, я получаю следующее исключение:

org.springframework .beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «entityManagerFactory», определенным в ресурсе пути к классу [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: не удалось инициализировать зависимость «dataSourceScriptDatabaseInitializer» bean-компонента LoadTimeWeaverAware «entityManagerFactory» ': Ошибка создания bean-компонента с именем dataSourceScriptDatabaseInitializer, определенным в ресурсе пути к классу [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: неудовлетворительная зависимость, выраженная через параметр метода dataSourceScriptDatabaseInitializer 0: ошибка при создании bean-компонента с именем ' dbTestConfig': Неудовлетворительная зависимость, выраженная через поле «dataSource»: Ошибка создания компонента с именем «dataSource»: Запрошенный компонент в настоящее время находится в процессе создания: существует ли неразрешимая циклическая ссылка?

Как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... containers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Spring Boot Tests: как заменить DataSource на источник, управляемый Testcontainers
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot Tests: как заменить DataSource на источник, управляемый Testcontainers
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot Tests: как заменить источник данных на источник, управляемый Testcontainers
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot 3.4.0 Let Tests Integration Tests с помощью JPA/Hibernate Fail
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Ios | Swift | Tests Tests json Удаление всех максимальных светильников JSON для преобразования в методах аналогичного ис
    Anonymous » » в форуме IOS
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»