Agile Samurai Base Camp 2014 Re:TDDに参加してきました - 個人的なまとめでかいたようにJUnit+Grooy+Spockでテストのテンプレを書いてみました。
コードはこちら
https://github.com/hachi-eiji/java-spock-practice
正直Groovyは初めて書いた(ネットで落ちてる資料を調べただけ)のでぶっちゃけGroovyぽくないと思いますのでそこら辺は勘弁。今所属しているプロジェクトでほぼ同じコードのプルリクエスト投げていてレビュー中。
なぜ試してみようと思ったかというとテストコードが非常に膨れ上がってたのです。
1つのサービスクラスのテストをつくろうとした時に8割がモックの設定ばかりで非常に楽しくない。かつ、同じメソッドの境界値試験をするときにそれぞれの境界値で複数メソッドを作らないといけない。楽しくないから生産性あがらないことが多いなぁと思ってました。
そんなときにAgile Samurai Base Camp 2014 Re:TDDに参加してきて、JUnit+Grooy+Spockのデモ拝見した時にこれだったら少しは楽になるかなと。ちょうどJavaを使っててテストコードだけだったらユーザに迷惑かけないから勝手につくちゃおうと。朝会でちょっとこれ試したいからーと宣言してやっちゃいました。(もちろん本来の仕事もしてましたよ)
気をつけたのは2点。
- このやり方を強制しない
- 既存のテストクラスを何点か移植してきて、サンプルコードとコメントを結構注意深く書いた
- 強制しないとはいえやっぱり使ってほしいし、何よりテストを楽に書いてほしい。なので、最初に書くところでハードルになってはいけない(これもBase Campで再認識したところ)と思ってだいぶ細かく書きました(あとでGitHubにあげよう)。例えば、given:はテスト実行前に呼ばれるsetUpと同じでwhereはこうでとか。モックを使ったときとか。