おそらく私の検索では完全に不十分でしたが、他の非プライベート メソッドを呼び出す Java クラス/メソッドの単体テストの作成方法に関するドキュメントやディスカッションを見つけることができませんでした。一見、Mockito は、内部メソッド呼び出しのモックが必要なメソッドをテストするためにスパイを使用する必要がある場合、設計に問題がある可能性がある (真の OO ではない) という立場をとっています。これが常に正しいとは限りません。しかし、スパイを使用することがこれを達成する唯一の方法のようです. たとえば、プリミティブな機能を他のメソッドに依存するが、他のメソッドの結果に依存する機能、エラー処理、ログ、またはさまざまなブランチなどを追加で提供する「ラッパー」スタイルのメソッドを作成できないのはなぜでしょうか?
だから私の質問は2つあります:
- 他のメソッドを内部的に呼び出すメソッドを持つのは、コードの設計と実装が不十分ですか?
- モッキングフレームワークとしてMockitoを選択した場合、そのようなメソッドの単体テストを作成する際のベストプラクティスおよび/またはアプローチは何ですか? (それ自体が良い考えであると仮定して)
これは難しい要求かもしれませんが、私はそのアプローチとイデオロギーをすでに認識しているので、単に Mockito の言い回しやスパイに対するスタンスを再公開するだけでなく、回答することを決定した人を希望します. また、Powermockito も使用しました。私にとっての問題は、Mockito がこのフレームワークを開発したことであり、この必要性をサポートするために追加の回避策を作成する必要がありました。したがって、私が答えを求めている質問は、スパイが「悪い」ものであり、Powermockito が利用できない場合、他の非プライベート メソッドを呼び出すメソッドをどのように単体テストすることになっているのでしょうか?