2009-11-18 13 views
5

Junit4テストを実行するときに、私は@RunWith(SpringJUnit4ClassRunner.class)アノテーションを使用します。このアノテーションを使用すると、Spring Beansをテストクラスに挿入できます。Spring JUnit4とJMockを一緒に使用する

私はJMock 2フレームワーク(実際の経験はありません)を使用したいと思いますが、私が見ている例では次のものが必要です@RunWith(JMock.class)

私の質問はJMockとSpringをJUnit4テストと一緒に使うことができますか?たとえば、JMockもサポートしているSpringテストランナーがいますか?

おかげで、

リチャード

答えて

6

あなたが明示的に例えば@After方法では、あなたのテストの終わりにcontext.assertIsSatisfied()を呼び出すことができます。

jmock.orgサイトでは、任意のコード例で[その他]タブを選択すると、JUnitフレームワーク統合なしでjMockを使用する方法がドキュメントに表示されます。

次のバージョンのjMockでは、JUnit 4.7の新しい「ルール」メカニズムがサポートされるため、カスタムテストランナーを使用する必要はありません。

+0

これは理にかなっています。 –

+1

JMockの最新バージョンには@ RuleオプションJUnitRuleMockeryがあり、これによりランナーが不要になります –

1

問題が@RunWithに関連する場合は、代わりにJMockit Expectations APIを使用できます。 期待値もnew Expectations() {...}ブロック内に記録されていますが、@RunWith(基本テストクラスも使用する必要はありません)という点でjMockに似ています。 さらに、expectationブロックをラップするメソッド呼び出しはありません。context.checking(...)

1

ここでもポイントがありません。 ユニットのテストでは、テスト対象のオブジェクトがどのように構築されているかを正確に制御する必要があります。これは、既知のインスタンスを共同作業者として渡すことを意味します。言い換えれば、オブジェクトが必要な場合はテストで作成して渡します。呼び出しには余計なものがあります。

のようなテストを行っていたら、春の豆が必要になります。一緒に配線したり、サードパーティ製のコンポーネントをテストするにはどうすればいいですか?