81

私とモッキートの間のレンガの壁を突き破ろうとしています。私は、Mockito のものに対して正しいimport staticステートメントを取得しようとして、髪を引き裂きました。anyInt()はorg.mockito.Matchersに由来し、 when ()はorg.mockito.Mockitoに由来するなどと言って、誰かがテーブルを投げ出すと思うかもしれませんが、それは初心者にとってはあまりにも役に立ちませんか?

この種のことは、特にアスタリスクで終わる無数の import ステートメントと混在している場合は、常に非常に役立つとは限りません。

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

はい、 Eclipse Window -> Preferences -> Java -> Editor -> Content Assist -> Favoritesメカニズムを知っていて、使用しようとしています。それは役に立ちますが、頭に釘を打つことはありません。

この質問に対する回答をいただければ幸いです。

どうもありがとう、ラス

4

4 に答える 4

108

状況に対処するために私が行ってきたことは次のとおりです。

新しいテスト クラスでグローバル インポートを使用します。

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.mockito.Matchers.*;

テストの作成が完了し、コミットする必要がある場合は、CTRL + SHIFT + O を押してパッケージを整理します。たとえば、次のものが残る場合があります。

import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Matchers.anyString;

これにより、インポートする正しいパッケージを見つけようとして「立ち往生」することなくコーディングできます。

于 2011-09-13T20:07:12.903 に答える
17

問題は、Hamcrestと Mockito からの静的インポートの名前は似ていますが、Matchers と実際の値をそれぞれ返すことです。

回避策の 1 つは、単純に Hamcrest や Mockito クラスをコピーし、静的関数を削除/名前変更して覚えやすくし、オートコンプリートに表示されないようにすることです。それが私がしたことです。

また、モックを使用するときは、assertThat他のものを優先assertionsして避けるようにしていますverify

assertEquals(1, 1);
verify(someMock).someMethod(eq(1));

それ以外の

assertThat(1, equalTo(1));
verify(someMock).someMethod(eq(1));

Eclipse のお気に入りからクラスを削除し、長い名前を入力してorg.hamcrest.Matchers.equalToCTRL+SHIFT+M を実行して「インポートを追加」すると、オートコンプリートは Hamcrest マッチャーのみを表示し、Mockito マッチャーは表示しません。また、マッチャーを混ぜない限り、これを別の方法で行うこともできます。

于 2011-09-06T17:01:39.860 に答える
4

is() の場合

import static org.hamcrest.CoreMatchers.*;

assertThat() の場合

import static org.junit.Assert.*;

when() と verify() の場合

import static org.mockito.Mockito.*;
于 2015-07-23T07:44:27.413 に答える