有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在@ContextConfiguration初始值设定项之前启动kafka测试容器?

我想启动kafka测试容器并获取其引导服务器:

@SpringBootTest
@ContextConfiguration(classes = {TestConfig.class, MyApplication.class}, initializers = MyIntegrationTest.Initializer.class)
@Testcontainers
public class MyIntegrationTest {

    @Container
    private static final KafkaContainer KAFKA = new KafkaContainer();

static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {

    @Override
    public void initialize(@NotNull ConfigurableApplicationContext configurableApplicationContext) {
        TestPropertyValues values = TestPropertyValues.of(
            "spring.kafka.consumer.bootstrap-servers=" + KAFKA.getBootstrapServers(),
            "spring.producer.bootstrap-servers=" + KAFKA.getBootstrapServers()
        );
        values.applyTo(configurableApplicationContext);
    }
}

不幸的是,我得到:

java.lang.IllegalStateException: You should start Kafka container first
at org.testcontainers.containers.KafkaContainer.getBootstrapServers(KafkaContainer.java:65) ~[kafka-1.12.2.jar:na]

共 (1) 个答案

  1. # 1 楼答案

    唯一的问题是在调用对象之后调用start()方法

    private static void startKafkaContainer() {
    
            KafkaContainer kafkaContainer = new KafkaContainer();
            kafkaContainer.start();
    
        }
    

    更多信息请查看此repository