web-dev-qa-db-ja.com

Mockitoコンストラクトのインポート静的ステートメントの検索

私とモッキートの間のレンガの壁を突破しようとしています。正しいimport static Mockitoのステートメントを取得しようとして、髪を引き裂きました。誰かが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メカニズムを知っていて使用しようとしています。 、しかし、それは頭の爪に当たらない。

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

どうもありがとう、ラス

67
Russ Bateman

問題は、 Hamcrest およびMockitoからの静的インポートには類似した名前がありますが、それぞれMatcherと実際の値を返すことです。

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

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

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

の代わりに

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

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

16
Garrett Hall

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

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

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;

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

95
Tony R

Is()の場合

import static org.hamcrest.CoreMatchers.*;

AssertThat()の場合

import static org.junit.Assert.*;

When()およびverify()の場合

import static org.mockito.Mockito.*;
1
ethemsulan