我注意到测试容器正在重新启动容器。 当我在Test类之间执行测试时,会发生这种情况。第一个测试类测试没有问题地连接到容器,但是在下一个类中,绑定到主机的端口增加了(因为新的容器已启动),而我的Spring集成测试不知道,导致静态测试失败的原因。 如何持久保存所有测试的容器?
请帮助
端口内部的容器(5432,因为它是postgressql)一直都是相同的。
答案 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);
}
}
}