単体テストの作成は困難な場合があり、場合によってはテスト容易性のためだけに良いデザインを犠牲にする必要があります。多くの場合、テスト容易性は優れた設計に対応しますが、常にそうであるとは限りません。たとえば、最終クラスとメソッドは使用できません。プライベートメソッドを保護するか、協力者に不必要に移動する必要がある場合があります。静的メソッドは、既存のフレームワークの制限のために完全に回避する必要があります。PowerMockは、EasyMockなどの他のモックライブラリをより強力な機能で拡張するフレームワークです。PowerMockは、カスタムクラスローダーとバイトコード操作を使用して、静的メソッド、コンストラクター、最終クラスとメソッド、プライベートメソッド、静的初期化子の削除などのモックを有効にします。カスタムクラスローダーを使用することにより、IDEまたは継続的統合サーバーに変更を加える必要がなくなり、導入が簡単になります。サポートされているモックフレームワークに精通している開発者は、静的メソッドとコンストラクタの両方で期待API全体が同じであるため、PowerMockが使いやすいと感じるでしょう。PowerMockは、少数のメソッドと注釈を使用して既存のAPIを拡張し、追加機能を有効にすることを目指しています。現在、PowerMockはEasyMockとMockitoをサポートしています。単体テストを作成する場合、カプセル化をバイパスすると便利なことが多いため、PowerMockにはテストに特に役立つ反射を簡素化する機能がいくつか含まれています。これにより、内部状態に簡単にアクセスできますが、部分的およびプライベートなモックも簡素化されます。PowerMockは、主にユニットテストの専門知識を持つ人を対象としています。後輩の開発者の手に渡ると、良いことよりも害になることがあります。
powermock