【发布时间】:2019-12-21 20:47:57
【问题描述】:
我正在尝试为我的 Kafka 消费者编写集成测试。
我正在使用JUnit 5,所以我无法使用@Rule 对其进行初始化,而我看到的使用@Container 初始化的示例也无法正常工作。
我尝试将我的 Junit 版本更改为 Junit 4,但这会损坏我的其他测试(所以我需要继续使用 Junit 5)。
我在 Junit 4 尝试使用这个例子: https://www.testcontainers.org/modules/kafka/
但它无法识别我的注释(@Testcontainers、@Container)。
Gradle 导入:
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
implementation group: 'org.apache.kafka', name: 'kafka-clients', version: '1.1.1'
testIntegrationImplementation "org.testcontainers:kafka:1.11.4"
我将此代码作为注释上传:
@Testcontainers
public class KafkaTestContainer implements BeforeAllCallback, AfterAllCallback {
@Container
public KafkaContainer kafkaContainer = new KafkaContainer();
private static final Logger logger = LoggerFactory.getLogger(KafkaTestContainer.class);
@Inject
private KafkaTestContainer() {
try {
} catch (Exception e) {
logger.error(e.getMessage());
}
}
private String getKafkaBootstrapServers(Request request) throws IOException {
return this.kafkaContainer.getBootstrapServers();
}
public void stopKafkaTestContainer() {
// Stop the container.
kafkaContainer.stop();
}
@Override
public void afterAll(ExtensionContext context) throws Exception {
}
@Override
public void beforeAll(ExtensionContext context) throws Exception {
boolean isKafkaRunning = this.kafkaContainer.isRunning();
if(isKafkaRunning) {
logger.info("start Kafka docker!!");
}
}
isKafkaRunning 值始终为 false。
- 对 Kafka 测试容器初始化有任何帮助吗?
- 我错过了什么??
【问题讨论】:
-
你有解决方案了吗?
标签: java apache-kafka integration-testing junit5 testcontainers