私のコードをテストしたいのですが、ビジネスロジッククラスの中には、たくさんのオブジェクトを要求することに気付いています。しかし実際には、これらのクラス間の通信は1つまたは2つの方法に制限されています。Java:テストのためだけにインターフェイスを抽出する
私はこれらの2つのメソッドでインターフェイスを作成し、私のテストで何もしないモックオブジェクトを作成するとよいでしょうか?
コードは本当に必要ではない多くのインターフェイスを持っています。それが良いアイデアかどうかはわかりません。
私のコードをテストしたいのですが、ビジネスロジッククラスの中には、たくさんのオブジェクトを要求することに気付いています。しかし実際には、これらのクラス間の通信は1つまたは2つの方法に制限されています。Java:テストのためだけにインターフェイスを抽出する
私はこれらの2つのメソッドでインターフェイスを作成し、私のテストで何もしないモックオブジェクトを作成するとよいでしょうか?
コードは本当に必要ではない多くのインターフェイスを持っています。それが良いアイデアかどうかはわかりません。
インターフェイスを持つことは良い考えですが、モックを行うためのインターフェイスは必要ありません。 EasyMock、Mockito、PowerMockはすべて、具体的なクラスの模擬を可能にします。だから、コードをそのままにして、注入されたクラスを模擬するためにMockito(私の個人的な好み)を使うことができます。
参考までに、モックは「何もしません」。それぞれの可能な戻り値とスローされる可能性のある例外をそれぞれテストする必要があります。
インターフェイスが重要な概念をキャプチャしている限り、より多くのメッセージ(imho)。道に沿って、インタフェースに関連しないクラスの一部を他のクラスに分けたり、別の実装を作成したりすることができます。
もう1つの答えで指摘したように、すべてのモッキングフレームワークでインターフェイスが必要なわけではありません。実際にはモックを有効にするだけの場合は必要ありません。
あなたのモックが実際に何もしていない場合は、より適切にはスタブと呼ばれることがあります。通常、実際のモックは、呼び出しが正しく行われたことを確認するために使用され、テストでは非常に積極的な役割を果たします。
私は間違った言葉を使いました。自分のコードをスタブしたいのですが: –
これは問題ありませんが、相互作用がすべて複雑なものであれば、実際に嘲笑してみてください。 –
ええ、それは実際には私がコードをもっと見ることです。テストは私よりも難しいです。本当に私のコード品質をテスト容易性にシフトさせる必要があります。 –
テストの面に関係なく、コードのいくつかの部分でいくつかの特定のメソッドだけが必要な場合は、これらのメソッドをキャプチャするインターフェイスを抽出することを強くお勧めします。それはあなたのアーキテクチャを明確にし、あなたのコードのカップリングを減らします(テストするのが簡単です)。
少なくとも2.4ドキュメントによれば、EasyMock *はインターフェイスのモックを許可します。 –
私は訂正しました。 –
モックされたメソッドは、私が本当に気にしていない他のパッケージやシステムに対して副作用を引き起こします。 Mockitoは面白いです、私はそれを見ていきます。 –