kafkaを使用してデータをキューに入れ、後でそのデータを使用してユーザーに注文する小さなシステムを開発しました。特定のことを手動でテストしましたが、現在の目的はプロセスを自動化することです。それをテストするために利用できるクライアントがあります。物事をグーグルしながら、kafkaクライアント自体を使用してユニットテストする方法を見つけましたが、私の目的はシステム全体をテストすることです。ガイドしてください
編集:私たちの目的はAPIテストだけです。つまり、UIではなくバックエンドだけです。
統合テストでプログラムでKafkaを開始できます、Kafka Zookeeperを使用するので、Zookeeperをよく見てください TestingServer -このクラスのインスタンスは指定されたポートを使用してZkサーバーを起動します。
次に KafkaServerStartable.scala を見てください。メモリ内のZkサーバーを指す構成を提供し、startup()
メソッドを呼び出す必要があります。コードは次のとおりです。
import kafka.server.KafkaConfig;
import kafka.server.KafkaServerStartable;
import Java.util.Properties;
public KafkaTest() {
Properties properties = createProperties();
KafkaConfig kafkaConfig = new KafkaConfig(properties);
KafkaServerStartable kafka = new KafkaServerStartable(kafkaConfig);
kafka.startup();
}
これらの助けを願っています:)
以下の答えは、まだ実用的なサンプルを探している人のためのものです。
KafkaServerStartableを使用した統合テストの目的で、メモリ内にサンプルを作成しましたkafka。誰でもこの機能をユースケースに拡張できます。
こちらのリンクをチェックしてください-> Kafka統合テスト
docker
コンテナでKafkaを起動すると、統合テストまたはエンドツーエンドテストに進むことができます。 Apachekafka-clients:2.1.0
を使用する場合、生成中にAPIレベルでZooKeeperを処理する必要はありません。またはレコードを消費します。
KafkaをDocker化してテストすると、シングルノードおよびマルチノードKafkaクラスターのシナリオをカバーするのに役立ちます。このようにして、モック/インメモリKafkaに対して一度テストし、後で実際のKafkaに対してテストする必要はありません。
テストシナリオが多すぎてカバーできない場合は、 Kafka Declarative Testing like docker-compose
styleを選択すると、KafkaクライアントAPIコーディングを排除できます。