0

まず、私はJava開発者ではなく、現在C#で開発していることを開示します。そのため、Javaに関して私が行う仮定やステートメントは、正しくないか、情報が不十分である可能性があります。

モックオブジェクトを使用して.Netで単体テストを作成する場合、99%の確率でインターフェイスをモックします。クラスをモックすることは可能ですが、仮想(つまりモック可能)メソッドを制御できるのはあなただけです。

Javaでは、メソッドはデフォルトで仮想であるため、クラスのモックはインターフェイスのモックとまったく同じになると思います。これは、すべてがモック動作でオーバーライドされるためです。

それで、Javaのインターフェース(および結果として単体テストのモックインターフェース)に依存することは依然としてベストプラクティスですか、それともほとんどのJava開発者はクラスを使用して型の数を減らしますか(インターフェースは必要ありません)?

4

4 に答える 4

1

Javaでもインターフェースをモックします。私はそれが全体の考えだと思います:クライアントはインターフェース参照型についてしか知りません。その背後にある模擬実装を注入することができ、クライアントは賢明ではありません。

于 2012-04-27T15:21:15.703 に答える
1

私は実際には逆の移行を行いました。つまり、Java でモックしてから、csharp に移行しました。私が働いていた会社は、コンクリートに実際にインターフェースがあったとしても、伝統的にインターフェースのモックアップを作成していました。それ以外の場合は、指定した理由で機能する実際のクラスをモックしました。したがって、私の経験から、明らかな依存関係の理由から、インターフェイスを優先しました。

Java については、Mockito モック フレームワークを選択しましたが、うまく機能していると思います。

http://code.google.com/p/mockito/

于 2012-04-27T15:19:23.883 に答える
1

私がお勧めするもう 1 つの優れたフレームワークは、EasyMock です。

http://easymock.org/

学習曲線が低く、使用しても問題はありませんでした。

于 2012-04-27T16:19:51.900 に答える
0

Mockitohttp://code.google.com/p/mockito/をお試しください。非常にシンプルでありながら強力です!

于 2012-04-27T18:53:43.620 に答える