1. ホーム

[解決済み】なぜMockitoは静的メソッドをモックしないのですか?

2022-03-30 06:09:11

質問

静的メソッドについてのスレッドをいくつか読み、静的メソッドの誤用や過剰な使用が引き起こす問題を理解したつもりです。しかし、なぜ静的メソッドをモックするのが難しいのか、その真相にはたどり着けませんでした。

PowerMockなど他のモッキングフレームワークはそれができるのに、なぜMockitoはできないのでしょうか?

を読みました。 この記事 しかし、著者はこの言葉に対して宗教的に反対しているようです。 static 私の理解不足かもしれませんが。

簡単な説明・リンクがあれば最高です。

解決方法は?

モックオブジェクトライブラリは通常、実行時にクラスを動的に生成してモックを作成することが多いからではないでしょうか( cglib ). つまり、実行時にインターフェースを実装するか(私が間違っていなければEasyMockがそうです)、モックするクラスを継承するか(私が間違っていなければMockitoがそうです)です。静的メンバは継承でオーバーライドできないので、どちらのアプローチも使えません。

静的なものをモック化する唯一の方法は モディファイ これは、継承よりも少し複雑だと思います。

一応、私の推測ではありますが...。