web-dev-qa-db-ja.com

自動化する方法Kafkaテスト

kafkaを使用してデータをキューに入れ、後でそのデータを使用してユーザーに注文する小さなシステムを開発しました。特定のことを手動でテストしましたが、現在の目的はプロセスを自動化することです。それをテストするために利用できるクライアントがあります。物事をグーグルしながら、kafkaクライアント自体を使用してユニットテストする方法を見つけましたが、私の目的はシステム全体をテストすることです。ガイドしてください

編集:私たちの目的はAPIテストだけです。つまり、UIではなくバックエンドだけです。

6
Alpana Chauhan

統合テストでプログラムで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();
}

これらの助けを願っています:)

8
Paweł Szymczyk

以下の答えは、まだ実用的なサンプルを探している人のためのものです。

KafkaServerStartableを使用した統合テストの目的で、メモリ内にサンプルを作成しましたkafka。誰でもこの機能をユースケースに拡張できます。

  • 変更は必要ありません。簡単にダウンロードして実行できます。
  • トピックへのメッセージの生成と消費をカバーするサンプルテストケースを追加しました。

こちらのリンクをチェックしてください-> Kafka統合テスト

2
Arunmozhi

dockerコンテナでKafkaを起動すると、統合テストまたはエンドツーエンドテストに進むことができます。 Apachekafka-clients:2.1.0を使用する場合、生成中にAPIレベルでZooKeeperを処理する必要はありません。またはレコードを消費します。

KafkaをDocker化してテストすると、シングルノードおよびマルチノードKafkaクラスターのシナリオをカバーするのに役立ちます。このようにして、モック/インメモリKafkaに対して一度テストし、後で実際のKafkaに対してテストする必要はありません。

テストシナリオが多すぎてカバーできない場合は、 Kafka Declarative Testing like docker-compose styleを選択すると、KafkaクライアントAPIコーディングを排除できます。

produce および consume を検証するためのいくつかの便利な例をここで確認してください。

0
Sidd Gautama