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ファイルでのモックが必要な場合のユースケースです。