0

Test クラスのフィールドを Autowired しました

@Autowired
private AbcDAO abcDAO;

そして、このように使用しました

doThrow(new RuntimeException()).when(abcDAO).methodName(xyz);

また

doNothing().when(abcDAO).methodName(xyz);

このような春のファイルでこのDAOクラスをモックしました

<bean id="abcDAO" class="org.mockito.Mockito" factory-method="mock"  >
        <constructor-arg value="a.b.c.abcDAO" />
    </bean>

私は得るNotAMockException Argument passed to when() is not a mock.

このように `@Mock アノテーションを使用すると

@Mock
    private AbcDAO abcDAO;

テストクラスで直接( @Autowiring してSpringでモックする代わりに)、正常に動作します。

なぜそれが起こるのですか?

編集:

わかりましたので、そうする理由を教えてください。

サービス X があり、'X' の API 用の junit を書きたいと考えています。Junit は、クライアントを作成してこれらの API を呼び出すような方法で記述されています。@Mock および @Inject モックを使用できるメソッドを直接呼び出していません。

明確かどうかはわかりませんが、これはSpringファイルでのモックが必要な場合のユースケースです。

4

1 に答える 1

2

この回答を参照してください: Why-does-mockito-think-this-autowired-bean-is-null

Mockito.mockはかかりませんStringClass<?>。他の質問で述べたように。Spring コンテキストでモックを作成しようとする正当な理由は本当にありますか?

于 2012-10-12T14:00:05.503 に答える