为什么测试容器重启测试类之间的容器

时间:2019-10-17 11:10:11

标签: integration-testing testcontainers

我注意到测试容器正在重新启动容器。 当我在Test类之间执行测试时,会发生这种情况。第一个测试类测试没有问题地连接到容器,但是在下一个类中,绑定到主机的端口增加了(因为新的容器已启动),而我的Spring集成测试不知道,导致静态测试失败的原因。 如何持久保存所有测试的容器?

请帮助

端口内部的容器(5432,因为它是postgressql)一直都是相同的。

1 个答案:

答案 0 :(得分: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);
      }
    }
}