39

単体テストを作成しようとしています。そのために Mockito モックの when ステートメントを作成していますが、戻り値が有効であることを Eclipse に認識させることができないようです。

これが私がやっていることです:

Class<?> userClass = User.class;
when(methodParameter.getParameterType()).thenReturn(userClass);

の戻り値の型.getParameterType()Class<?>であるため、Eclipse が . と言う理由がわかりませんThe method thenReturn(Class<capture#1-of ?>) in the type OngoingStubbing<Class<capture#1-of ?>> is not applicable for the arguments (Class<capture#2-of ?>)。それは私のuserClassをキャストすることを提案しますが、それはいくつかの文字化けしたものを日食にし、再度キャストする必要があると言います(そしてキャストできません)。

これはEclipseの問題ですか、それとも何か間違っていますか?

4

5 に答える 5

86

また、これを回避するもう少し簡潔な方法は、when の代わりに do 構文を使用することです。

doReturn(User.class).when(methodParameter).getParameterType();
于 2013-08-14T21:43:38.707 に答える
29
Class<?> userClass = User.class;
OngoingStubbing<Class<?>> ongoingStubbing = Mockito.when(methodParameter.getParameterType());
ongoingStubbing.thenReturn(userClass);

OngoingStubbing<Class<?>>によって返されるのMockito.whenは、ongoingStubbing各 '?' ワイルドカードは別のタイプにバインドできます。

型を一致させるには、型パラメーターを明示的に指定する必要があります。

Class<?> userClass = User.class;
Mockito.<Class<?>>when(methodParameter.getParameterType()).thenReturn(userClass);
于 2013-08-15T00:59:24.340 に答える