12

このmaven行を使用して、プロジェクトにmockitoをセットアップしました:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.8.5</version>
    <scope>test</scope>
</dependency>

アノテーションの使用に問題はありません@Mockが、次のような mockito メソッドにアクセスして使用することはできません。

when(someMock.someMethod()).thenReturn();

Eclipseはそれらを認識しません。

助けてください。

4

2 に答える 2

35

静的インポートに依存しないMockito.when(foo.getBar()).thenReturn(baz)andを呼び出してみてください。技術的にはクラスであり、Mockito クラスの静的メソッドであるアノテーションMockito.verify(foo).getBar()とは異なります。@Mockwhenverify

それが機能したら、Davidがほのめかした静的インポートを試してください:

import static org.mockito.Mockito.when;   // ...or...
import static org.mockito.Mockito.*;      // ...with the caveat noted below.

これにより、クラスMockito.whenを指定せずに使用できるようになります。Mockitoワイルドカードを使用することもできますが、この SO の回答によると、Java ドキュメントではワイルドカードを控えめに使用することを推奨しています。

追加ではパッケージimport org.mockito.*;内のすべてのクラスが追加されますが、 のメソッドは追加されないため、追加は不十分です。org.mockitoorg.mockito.Mockito

when特に Eclipse の場合、 の部分にカーソルを置き、 Mockito.whenControl-Shift-M (「インポートの追加」) を押すと、静的インポートを追加できます。org.mockito.Mockitoお気に入りに追加することもできます ([ウィンドウ] > [設定] > [Java] > [エディター] > [コンテンツ アシスト] > [お気に入り] > [新しいタイプ])。これにより、特にインポートしていない場合でも、すべての Mockito 静的メソッドが Ctrl-Space コンテンツ アシスト プロンプトに表示されます。(技術的には継承によって org.mockito.Mockito で利用できる org.mockito.Matchers に対してもこれを行うことができますが、その理由で Eclipse に表示されない場合があります。)

于 2012-12-31T01:19:32.580 に答える