私は嵐のトポロジーを開発してきましたが、トポロジーを起動してトラフィックを送信しなくても作成されたボルトとスパウトのユニットテストの適切な方法が欠けていることがわかりました。 トポロジで使用されるサービスは分離され、ユニットテストされていますが、使用方法やトポロジの内容(タプルが間違っているなど)でエラーが発生する可能性があります。 これに対処するために私のプロジェクトで単体テストを作成する方法は何ですか?おかげさまで ストームトポロジの単体テストを行う方法は?
3
A
答えて
0
ボルト用の単体テストを作成するにはちょっと複雑ですが、を配置することなくをインストールすることはできません。 IOutputCollector を実装するテストクラスと、タプルを実装する別のテストクラスを作成できます。 使用するメソッドを実装し、おそらく放出されたタプルを保存する必要があります。
その後、次のコードを使用してボルトのユニットテストを作成できます。
MockOutputCollector c = new MockOutputCollector();
Bolt b = new Bolt();
b.prepare(c,null,null);
MockTuple tuple = new MockTuple(fields,Arrays.aslist({"a,b,c"}));
b.execute(tuple);
List result = c.getEmittedTuples().get(0);
0
私はあなたがやっている処理の複雑さについては知らないが、ボルトをテストするための簡単な方法は、中タプルコンテンツに(お好みのテストフレームワークを使用して)をアサートん別のボルトを作成することですメソッドを実行します。
ユニットテストでは、AssertOutputボルトで各メソッドを呼び出すことで、簡単にボルトの出力を確認できます。
タプルの内容のチェックを自動化するために私が知っている唯一の方法です。
あなたは単体テストについて話しているのではなく、次のステップである統合テストについて話しているように、私にとってもっと響きます。 – Gimby
さて、私は統合テストを追加しました。しかし、それは大いに役立ちます:)しかし、それは遅く、私のトポが正しいかどうかをチェックしたり、各ブロットが正しいタプルを送信/処理しているかどうかをチェックするような基本はユニットテストできます。一番いい方法。おそらくモッキートと一緒だけど、もっと良いものがあることを願っています。 – Orpheo