Почему тестконтейнеры перезапускают конденсатор между тестовыми классами - PullRequest
0 голосов
/ 17 октября 2019

Я заметил, что тестовые контейнеры перезапускают контейнер. Это происходит, когда я выполняю тесты между тестовыми классами. Первый тестовый класс тестов подключается к контейнеру без проблем, но затем в следующем классе порт, который привязывается к хосту, увеличивается (потому что новый контейнер работает), и мой интеграционный тест Spring не знает об этом, что приводит к сбою теста покоя. Как сохранить контейнер для всех тестов?

Пожалуйста, помогите

Контейнер внутри порта (5432, как и postgressql) всегда один и тот же.

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Если вы хотите повторно использовать контейнеры между тестовыми классами, вам нужно объявить его как статическое поле и инициализировать один раз, например

@ContextConfiguration(initializers = BaseIntegrationTest.Initializer.class)
class BaseIntegrationTest {
  static KafkaContainer kafkaContainer;
  static {
    kafkaContainer = new KafkaContainer();
    kafkaContainer.start();
  }

  static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
      @Override
      public void initialize(ConfigurableApplicationContext applicationContext) {
        TestPropertyValues.of(
          "kafka.bootstrapServers=" + kafkaContainer.getBootstrapServers()
        ).applyTo(applicationContext);
      }
    }
}
0 голосов
/ 18 октября 2019

Может быть, это то, что вы ищете https://www.testcontainers.org/features/networking/

...