Mockito が静的メソッドをモックしないのはなぜですか? 質問する

Mockito が静的メソッドをモックしないのはなぜですか? 質問する

ここで静的メソッドに関するスレッドをいくつか読みましたが、静的メソッドの誤用や過度の使用が引き起こす可能性のある問題は理解できたと思います。しかし、静的メソッドをモック化するのがなぜ難しいのか、その真相はよくわかりませんでした。

PowerMock などの他のモック フレームワークではそれができることは知っていますが、なぜ Mockito ではできないのでしょうか?

私は読むこの記事しかし、著者はその言葉に強く反対しているようですstaticが、それは私の理解が足りないのかもしれません。

簡単な説明/リンクがあると助かります。

ベストアンサー1

その理由は、モックオブジェクトライブラリが通常、実行時に動的にクラスを作成することでモックを作成するためだと思います(cglib)。つまり、実行時にインターフェースを実装するか (EasyMock が行うことです)、クラスから継承してモックするか (Mockito が行うことです) のいずれかです。どちらのアプローチも、継承を使用してオーバーライドできないため、静的メンバーには機能しません。

静的クラスをモックする唯一の方法は、実行時にクラスのバイトコードを変更することですが、これは継承よりも少し複雑だと思います。

それは私の推測ですが、参考になれば幸いです...

おすすめ記事