1

jMockのモックとスタブの違いは何ですか? jMockで両方を作成できますか? それを使用してスタブを作成する方法と、これに最も適した状況は何か、スタブを使用するのは、テストのために何らかの状態を準備する必要があるときだと思います。

ありがとう

4

3 に答える 3

2

ウィキペディアにはモックオブジェクトに関する記事がありますが、用語は可能な限り説明されていません。以前はこの区別を行っていました(もちろん、議論の対象となる可能性があります)。

モックとスタブはどちらも、コンポーネントのテストに必要なオブジェクトをシミュレートします。

「モック」という言葉は、テストされたコンポーネントとモックされたオブジェクトの間で特定の種類の相互作用が発生することを表明したい場合に使用されます。そのため、モックフレームワーク(EasyMockなど)は、予想されるすべての呼び出しが実際に実行されたことを表明するメソッドを提供します。例:サービスが実際に(モックされた)DAOを呼び出していることを確認したい。したがって、この呼び出しはテスト条件/アサーションの一部です。

ただし、「スタブ」という言葉は、コンポーネントのテストに役立つ実装を提供しようとしている場合に使用されます。どのような相互作用が発生するかは重要ではありません。コンポーネントをテストできるように、スタブでギャップを埋めるだけです。あなたの焦点は、テストされたコンポーネントとそれが何をするかにあります。

ですから、それを使って何を達成しようとしているかにもよりますが、同じことを表すのはたった2つの言葉です。

于 2011-04-23T17:02:08.160 に答える
1

Mocha は、JMock 型の伝統的なモッキング ライブラリです。Stubba は Mocha の別の部分であり、実際の (非モック) クラスのメソッドのモックとスタブを可能にします。対象のメソッドを片側に移動し、従来のモック オブジェクトに委譲する新しいスタブ バージョンのメソッドを追加することで機能します。このモック オブジェクトを使用して、スタブ化された戻り値を設定したり、呼び出されるメソッドの期待値を設定したりできます。テストが完了すると、メソッドのスタブ バージョンが削除され、元のメソッドに置き換えられます。

例の詳細については

http://jamesmead.org/blog/2006-09-11-the-difference-between-mocks-and-stubs

于 2011-04-23T15:19:36.057 に答える
0

通常、クエリとアクションは区別されます。クエリは、モックされたオブジェクトの外側の世界の状態を変更しません。1 回または 5 回呼び出すことができます。これらは、Design by Contract を行った場合の前提条件のようなものです。

アクションは外の世界を変更し (値を減算するなど)、それらのモックを指定します。結果が異なるため、モックを呼び出す回数が重要です。これらは事後条件のようなものです。

スタブ クエリ、モック アクション。

于 2012-01-24T10:13:13.610 に答える