Почему testcontainers перезапускает Contener между тестовыми классами

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

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

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


person masterdany88    schedule 17.10.2019    source источник


Ответы (1)


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

@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);
      }
    }
}
person Community    schedule 22.10.2019