問題タブ [mrunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
553 参照

unit-testing - 単体テスト用の MR-Unit と JUnit の比較

JUnit と Mockito の使用と比較して、MR ジョブの単体テストに MR-Unit を使用する利点は何ですか?

具体的には、JUnit を使ってできることとできないこと、またははるかに難しいことは何ですか?

私の考えは、すべてのロジックをマッパー/リデューサーからヘルパー クラスに移動し、適切なメソッドがモックで呼び出されることを確認することです。

MRユニットを使用する理由

0 投票する
2 に答える
2277 参照

unit-testing - mrunitの後継は?

今日、ASF が mrunit を廃止したことを知りました ( https://blogs.apache.org/foundation/entry/the_apache_news_round_up85https://issues.apache.org/jira/browse/HADOOP-3733およびホームページ自体を参照)。「無活動」以外に理由がなかったので、代替手段があるのではないでしょうか?

将来、mapreduce ジョブを単体テストするために、mrunit の代わりに何を使用することになっていますか?

0 投票する
1 に答える
92 参照

configuration - 空の構成を返す MRUnit Context オブジェクト

MRUnit のヘルプが必要です。以下のように、構成ファイルを MapReduceDriver に追加しています。

レデューサー クラスが setUp() メソッドのプロパティにアクセスしようとすると、渡された構成ファイルから値を取得できません。

// この appNameListStr は null として返されます。

これに関する提案/ヒント。

0 投票する
1 に答える
94 参照

java - MRUnit での特定の例外のテスト

TestNG (または JUnit) では、簡単です。次のようになります。

String xしたがって、上記のテストはパスnullし、NullPointerException がスローされます。

しかし、MRUnit では、アサーションの動作が異なります。以下は、マッパー クラスのテスト メソッドです。

での入力を受け取り、でsomeDataの出力を期待しますsomeKeysomeDataしかし、不正なデータをフィードして の有効性をチェックする Try/Catch ブロックをカバーする必要があります。この場合、.withOutputメソッドは必要ないようです。MRUnit で便利にテストする方法はありExceptionsますか?

0 投票する
1 に答える
38 参照

mapreduce - MRUnit を使用してテストする前に出力を微調整する

mapreduce2 を使用してアプリケーションを作成し、MRUnit 1.1.0 を使用して同じものをテストしています。テストの 1 つで、「現在のシステム時刻」を出力に入れるレデューサーの出力をチェックしています。つまり、リデューサーの実行時に、タイムスタンプが使用されcontext.write()、残りの出力と共に書き込まれます。レデューサーで使用するのと同じ方法をテスト メソッドで使用してシステム時間を見つけたとしても、両方で計算される時間は通常、 と のように 1 秒離れてい2016-05-31 19:10:02ます2016-05-31 19:10:01。したがって、2 つの出力は異なることがわかります。例:

これにより、アサーション エラーが発生します。このタイムスタンプの違いを無視したいので、タイムスタンプ以外の残りの出力が一致すればテストはパスします。システム時間を返すために使用されるメソッドをモックする方法を探しています。これにより、ハードコードされた値が返され、リデューサーとテストの両方がテスト中にこのモックされたメソッドを使用します。これは可能ですか?どんな助けでも大歓迎です。

よろしくお願いします

編集:私はすでに私のテストでMockitoのスパイ機能を試しました:

ただし、これにより実行時エラーが発生します。

メソッドgetSysTime()はパブリックかつ静的であり、クラスMClassはパブリックであり、親クラスはありません。

0 投票する
3 に答える
3972 参照

java - java.lang.VerifyError: PowerMockRunner を使用している場合、ブランチでスタックマップ フレームが必要です

複数の出力をテストするために ReduceDriver を使用するために、プロジェクトで MRUnit バージョンを 1.1.0 にアップグレードしました。テストに変更を加えた後 (アップグレードで動作するようにするため)、次のエラーが発生します。

私のテストは次のようになります(これをより簡潔にするために意図的にコードを削除しました):

@PrepareForTest を使用するとエラーが発生します。myReducerクラスには static または final メソッドがないことに注意してください。そのため、 @PrepareForTest アノテーションには含まれていません。私のpomファイルの一部(ビルドにmavenを使用しています)は次のようになります。

また、私は Java 8 を使用しており、ここに記載されているように v7 または v6 にダウングレードできないことに注意してください: java.lang.VerifyError: Expecting a stackmap frame at branch target

ここに記載されているように、pomファイルにsurefireプラグインを追加しようとしました: java.lang.VerifyError: Expecting a stackmap frame at branch target 73

この場合、これらのソリューションはどれも機能しません。

0 投票する
1 に答える
66 参照

java - Mrunit: MultiOutput テストの値コンパレータの設定方法

mrunit で MultiOutput をテストするためにキー/値コンパレータを設定する方法はありますか?

私の分析に基づいて: mrunit は、マルチ出力の期待値と実際の値の等価性をテストするためにキー/値コンパレータを使用しません。キー/値コンパレータは、単一出力のキーと値の比較にのみ使用されます。

TestDriverクラスには、期待される結果と実際の結果を比較する単一出力と複数出力用の個別のメソッドがあります。