2017-11-21 4 views
-1

Mockito.mockと@Mockはdo the same thingとなっています。奇妙なことに、UriInfoを嘲笑すると、これはそうではないようです。 JUnit4を使って自分のユニットテストでは、以下のコードは動作します:@MockとMockito.mock(UriInfo.class)の違いは何ですか?

private UriInfo uriInfo = Mockito.mock(UriInfo.class); 

これはテストを実行している時に「設定されていないパラメータuriInfo」のエラーが発生したのに対し:

@Mock 
private UriInfo uriInfo; 
+0

'@ Mock'を使用している場合は、' MockitoAnnotations.initMocks(this) 'を使用してモックを初期化する必要がありますか? – pvpkiran

+0

Mockitoの注釈アノテーションを使用している場合は、 'MockitoAnnotations.initMocks(this); 'を呼び出す必要があります。これは、@Beforeアノテーションでマークされたメソッドでよく行われます。 – DwB

+0

あなたのリンクから 'テスト実行中にMockitoアノテーションを有効にするには、MockitoAnnotations.initMocks(この)静的メソッドを呼び出さなければならないことに注意してください。 ' – Oleg

答えて

1

あなたはモック初期化を行っていますか?

@Before 
public void before() { 
    MockitoAnnotations.initMocks(this); 
} 

それとも、あなたのテストクラスの特別なランナー使用することができます:あなたが嘲笑urlInfoを使用しない

@RunWith(MockitoJUnitRunner.class) 

を?あなたはメソッドの模擬実装を指定しましたか?たとえば、

when(urlInfo.getPath()).thenReturn("some/path"); 
when(urlInfo.toString()).thenReturn("some/path"); 
+0

はい、私は '@RunWith(MockitoJUnitRunner.class)'を使ってmockitoにテストを実行させました。 –

+0

@TreefishZhang、もっとコードを表示する必要があります... – kotslon

+0

uriInfoは、メソッドとして呼び出されずにオブジェクトとして渡されます。テスト対象のクラスは、別のクラスを '拡張 'します。しかし、ここでの私の質問は、@Mockがその代替案と異なる理由です。 @Mockはnullを返したのに対し、Mockito.mock()はnull以外の値を返していました。 –

関連する問題