2011-09-06 17 views
55

私とMockitoの間のレンガの壁を突破しようとしています。私は正しい取得しようとする上に私の髪を引き裂いてきたインポート静的文のMockitoのもの。あなたは、誰かがちょうどanyInt()org.mockito.Matchers(から来ている)org.mockito.Mockito、から来ているが、それは可能だろうと言ってテーブルを投げるだろうと思うだろう初心者にも役立つ、いいえ?Mockitoコンストラクトのインポート静的ステートメントの検索

この種のものは、アスタリスクで終わる無数の多くのimport文で混合したときには特に、いつも非常に有用ではありません。

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

はい、私は知っているとEclipseを使用しようとしていますウィンドウ - >環境設定 - > Java - >エディタ - >コンテンツアシスト - >お気に入りメカニズム。それは助けますが、頭の釘を打つことはありません。

この質問に対する回答はありがたいです。 ラス

+0

:私のオリジナルのポストをまた別の質問がありましたが、括弧がないためにコードに問題があることが判明しましたので、その部分を削除しました。 –

+0

あなたはチートシートをお探しですか?私たちはおそらく1つを振ることができますか? APIについて不十分な点は何ですか? http://mockito.googlecode.com/svn/branches/1.6/javadoc/index.html?org/mockito/Matchers.html –

+2

したがって、インポートステートメントでアスタリスクを宗教的に避けることを理解する必要があります。コードの最上位にあることは、シンボルがどこから来るのかがわからないことを意味し、したがって、私のプロジェクトにどのJARを含めるべきかを決めることができません。ブラウザでJavadocを検索することは、シンボルを見つけるにはあまり適していません。ええ、チートシートはすごくいいですが、同僚として今話し合っていましたが、これはJavaコミュニティが今までに解決したと思われる問題の1つです。ありがとうございます - もしあなたがそれをすれば教えてください。 –

答えて

15

問題

多くのおかげで、HamcrestとMockitoから静的な輸入が同様の名前を持っていますが、それぞれ、マッチャと実際の値を返すということです。

一時的な機能を削除したり名前を変更したりすることで、覚えやすく、自動完成で表示されないようにすることもできます。それが私のしたことです。

また、モックを使用する場合、私はassertThatを好む他のassertionsverifyで避けようとします。

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を 'Add Import'にすると、オートコンプリートではハムクレストマッチャーのみが表示され、Mockitoマッチャーは表示されません。マッチャーを混ぜない限り、これを他の方法で行うことができます。

+1

うん、あなたは私の苦情のうちの1つを初心者として釘付けにしました。インターフェイスがどこから来ているのかはわかりません(JUnit、模擬フレームワーク、Hamcrestなど)JARからプロジェクトをまとめようともっと多くの時間を費やします本当にすべきである(私はC言語のインタフェースをライブラリやヘッダファイルから探し出していた。 –

+0

あなたはなぜあなたがアサートを避けるのかについてもっと雄弁に思うかもしれません。私はまだそれほど難しいとは思っていませんが、今私はモックでテストを書くことに踏み込もうとしています。ありがとう。 –

+0

さて、もう一つの解決策があります。希望が助けてくれる! –

85

ここに私がその状況に対処するためにしてきたことがあります。

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

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; 

これにより、正しいパッケージを見つけようとすることなく、コードを取り除くことができます。

+6

もし私ができれば、私はこれを2回upvoteしよう! – Justin

+0

Macユーザーの場合、Ctrl + Shift + Oではなく[command + shift + O](https://blog.codecentric.de/en/2012/08/my-top-10-shortcuts-for-eclipse-on) -mac-os-x-and-windows-and-how-you-survive-windows-to-mac /#コメント-165299) –

+0

'import static orgのようなものを永久に使うことの欠点は何ですか? .junit.Assert。*; 'をテストクラスに追加します(末尾の' ctrl' + 'shift' +' O')に置き換えません)。 – mkasberg

0

については()assertThat用

import static org.hamcrest.CoreMatchers.*; 

()

import static org.junit.Assert.*; 

(用)と)(検証

の周りにコミュニティをジャークして申し訳ありません
import static org.mockito.Mockito.*; 
関連する問題