読者です 読者をやめる 読者になる 読者になる

Agile Samurai Base Camp 2014 Re:TDDで学んだことを反映してみる

テスト Java

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点。

  1. このやり方を強制しない
    • いまはJUnit+JMockitで作ってるのですが、それはそれでいいかなと思っています。好きなほう(楽なほう)をつかえばいいのかなと思ってます。自分もたまたま今回使った言語がGroovyだっただけだし、宗教上の理由でGroovy使えない人もいるかもしれないしw
  2. 既存のテストクラスを何点か移植してきて、サンプルコードとコメントを結構注意深く書いた
    • 強制しないとはいえやっぱり使ってほしいし、何よりテストを楽に書いてほしい。なので、最初に書くところでハードルになってはいけない(これもBase Campで再認識したところ)と思ってだいぶ細かく書きました(あとでGitHubにあげよう)。例えば、given:はテスト実行前に呼ばれるsetUpと同じでwhereはこうでとか。モックを使ったときとか。