低スペックな頭の僕でも簡単に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に空気を読ませて楽する術〜
作ったもの
設定方法
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コードスニペットを集めてみました。若干説明が雑なとこもあるので
その辺は使いやすいようにテンプレートを編集するといいと思います。