低スペックな頭の僕でも簡単にhamcrestのmatcherを扱う方法


こんにちは。低スペック系プログラマregtanです。いっちゃなんですが僕はそんなにハイスペック系
プログラマでないことはよくよく理解しています。build.xmlで存在しないパス書いてドヤ顔したり、
全部staticつけたりしない程度にはJavaかける程度のスペックはあるとおもいます。
そんな僕でもJavaはTDDで書こうと思うしhamcrest使おうとか考えちゃう訳ですよ。

org.hamcrest.CoreMatcher.*やorg.hamcrest.Matcher.*に色々便利そうなMatcherが入っていますが
なかなか覚えられません。低スペックだから仕方ありません。自分で覚えられないのならいつも使う
IDEに覚えてもらうのが一番楽。つまりはEclipseに空気を読んでもらってアシストしてもらえばいい
わけです。流石の僕もCtrl+Space押せばコードアシストすることくらい知ってるしね。

考えてみた


地豆んじゃーリーダーが「aTって売ったらassertThatって出てくる位にするといい」って言ってた気が
するのでその教えに従ってせっせとコードテンプレートを作成してみた。


作成時に参考にしたエントリ
hamcrestのMatcherメモ
全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜

作ったもの

http://dl.dropbox.com/u/722350/templates.xml
ダウンロードしてね

設定方法


EclipseのコードテンプレートとしてImportするといいです。
[Window]-[Prefrences]-[Java]-[Editor]-[Templates]でimportを選んで落としたファイルをインポート。
そうすると


って感じによく使いそうなassertThatのコードスニペットEclipseさんが提示してくれます。
さらにどのMatcherをつかっていいかわかんない><っていう僕みたいな人のために簡単にわかるように
コードアシスト時に表示されるようにしました。モヒカンマッチョにクビを狩られそうな仕様です。

加えてTestテンプレートにもこれらのコードスニペットをスムーズに使うために必要なstatic importを
追加してくれるように編集しておきましょう。

@${testType:newType(org.junit.Test)}
public void ${testname}() throws Exception {
	${staticImport:importStatic('org.junit.Assert.*', 'org.hamcrest.CoreMatchers.*','org.hamcrest.Matchers.*')}${cursor} 
}


あとEclipseさんが空気を読みすぎてimport再編成したときに勝手にimport文を展開しないように設定。
[Java]-[Code Style]-[Organize Imports] の Number of static imports needed for .* を 1 *1
Eclipseさん空気読みすぎる気使いっ子。有能すぎて隙がなさすぎるメイドさんみたい。

使い方


aT→ctrl+spaceでassertThatのコードスニペットが全て表示されます。(約30パターン)
aTs→ctrl+spaceで文字列系のassertThatコードスニペットに絞り込まれます
aTn→ctrl+spaceで数値系のassertThatコードスニペットに絞り込まれます
aTc→ctrl+spaceでCollection系のassertThatコードスニペットに絞り込まれます
aTb→ctrl+spaceでBean系のassertThatコードスニペットに絞り込まれます


よく使いそうなassertThatコードスニペットを集めてみました。若干説明が雑なとこもあるので
その辺は使いやすいようにテンプレートを編集するといいと思います。