16

この比較は、JMockitが他のフレームワークに比べていくつかの利点があることを示しています。

他の1つ(JMock、EasyMock、Mockito、Unitils、PowerMock + Mockito / EasyMock)がJMockitよりも優れている点もありますか?

4

2 に答える 2

17

最近、JMockitを使用するプロジェクトを採用しましたが、静的メソッドとプライベートメソッドをモックアウトするライブラリの機能の結果として、コードの品質が確実に低下したと思います。

プライベートメソッドに含まれる実装の詳細がテストされているため、テストは非常に脆弱です(したがって、クラスの実行方法を変更すると、クラスの実行に影響がない場合でも、テストが失敗する可能性があります)。

コードには静的メソッドの呼び出しも散らばっています-開発者がこれらをモックアウトする能力を持っていなかった場合、彼らは物事をもう少しうまく切り離すためにもっと努力しただろうと思います。

于 2011-09-21T12:47:07.837 に答える
14

3つの欠点:

  • バイトコードのインストルメンテーションを行うには、Javaエージェントを使用する必要があります。
  • Eclipseに同梱されている署名付きjunit.jarファイルは使用できません。
  • モックAPIを学ぶ必要があります。(スタブオブジェクトとは対照的に)

JMockitのように最終クラスをモックできるのは良いことかどうか、いつでも話し合うことができます。レガシーコードでない限り、通常はリファクタリングがより良い代替手段です。

EclipseのようなIDEでは、最近、ツールサポートを使用して、モック(JMockit、Mockitoなど)よりも頻繁にテストクラス内にスタブを生成しています。このアプローチの利点は、非常にシンプルなことです。これは、多くの開発者がいるチームがあり、一部の開発者がテストを嫌い、モックフレームワークを学ぶ動機がほとんどない場合に特に便利です。また、スタブの実装にはフレームワークの制限はありません。

別の方法としてスタブを使用する場合は、ここここでモックとスタブに関するRobertC.Martinのブログを確認してください。

そうでなければ、それはとてもよさそうだ!私はJMockの経験しかありませんが、EasyMockとJMockitの基本的な知識があります。

于 2010-06-05T19:07:03.847 に答える