Cascadingの単体試験用クラスについて。
Cascadingの単体試験用に、JUnitのTestCaseクラスから派生したCascadingTestCaseというクラスが用意されている。
このクラスを使う為には、CASCADING_HOME/cascading-test-*.jarをクラスパス(Eclipseのビルドパス)に加える必要がある。
(このjarファイルへのソースの添付には(Cascading本体のjarファイルと同様に)CASCADING_HOME/srcを指定する。)
このクラスはJUnit3.8系らしい。
HadoopのライブラリーにHADOOP_HOME/lib/junit-3.8.1.jarがあるので、これをビルドパスに含めればいい。
CascadingTestCaseには、Operation系クラス(Function・Filter・Aggregator・Buffer)をテストする為のメソッドが用意されている。
メソッド名 | 概要 | 備考 |
---|---|---|
invokeFunction() | Functionを実行する。 関数の出力結果のTupleListCollectorが返る。 |
|
invokeFilter() | Filterを実行する。 isRemove()の結果が返る。 |
|
invokeAggregator() | Aggregatorを実行する。 集約関数の出力結果のTupleListCollectorが返る。 |
collectorが用意されるのはcomplete()メソッドのみ。 つまりaggregate()でタプルを出力した場合は collectorに入ってこないので、テスト失敗になる。 |
invokeBuffer() | Bufferを実行する。 出力結果のTupleListCollectorが返る。 |
例えば平均を算出するAverageクラスのテストケースとしてAverageTestというクラスがcascading-test-*.jarに含まれており、EclipseのJUnit機能で実行すれば、実際に動作させることが出来る。
どのようにテストをコーディングすればよいかのサンプルになるだろう。