PoohSunny's blog

生きるために食べるのか、食べるために生きるのか。

じゃあいつSpockで書くか? 『JUnit実践入門』写経・実践会 in 横浜 #5 に参加してきた #junitbook

今回はBDDの話!

BDD(振舞駆動開発)が今回のテーマ。
私、今回の勉強会で本を読むまで Cucumberのことを「かかんばー?」と読むくらいのド素人でして、正直完全にお勉強させてもらう気分で臨みました。

ディスカッション

いろんな議論が出た気がしてるんですが、

  • そもそも受け入れテストって?
  • TDDとBDDの違い
  • BDDって何が嬉しいのか?

などなどがトピックとして挙がった気がしています。
いろいろと話題は出て参考になったものの、自分の中ではっきりとイメージがつかめるまでには至らずもやっとしてしまいました。
というわけで、もやもや駆動調べもので今日いろいろと調べてみたところ、少し理解できたかもーというところまできたので、それは別エントリーでまとめたいと思います。

機会があれば、バリバリBDDしてるぜっ! って経験者の方のお話を伺えるといいかも。と思いました。

実践編

事前準備でハマった



というように、ワタクシ事前準備でハマっていました。
(メソッドがねー! って怒られる。Maven使えってことでしょうか。)

書籍で記載されているバージョンで関連jarを入れなおしたら正常に動作したので、今回はこれで良しとしました。

実践タイムはSpock体験

で、cucumber-junit の方は一区切りつけて、せっかくなので @grimrose さんと @y_sumida さんに Spockの使い方を教わりました。
(なのでBDDの実践って感じではなかった。)

というわけでタイトルの通り、


となりました。

以下やったことまとめです。

環境構築

環境構築は、@grimroseさんがTDDBC用に用意してくれたスケルトンプロジェクトを利用させてもらいました。

上記URLのREADMEの手順に従えばアッという間に環境構築。超すんなりいきました。
(私はREADMEすらまともに読まず手取り足取り教えてもらってしまいましたが。。。。)

お題

今回は、@pocketberserkerさんの、下記のお題にしました。

序の部分の写経がちょうど終わったところでタイムアップでしたね。

成果

私が書いたソースはこちらです。

写経していて、写経元と変えたのは以下の点

  • 元ネタページで、「text」と書いてある部分は「null」のことですので、そっちで書いています。(誤植?)
  • dump()の部分は、Objectのdump()を呼んでしまうのでテストが意図しない形で通ったりしたので、dumpAll()ってメソッド名にして書きました。
感想

すごく楽しかったです。

  • Groovy超便利
  • power assert素晴らしい。類似度とかどういうときに役立つのかわからんが。
  • 川口さんがJUnitのテストをGroovyで書かないなんてもはやありえない」って言ってましたが、TDDでプロダクション-JUnit:テスト-Groovyでやろうとすると、スイッチがうまくいかずちょっと混乱しました。慣れの問題?
  • ときどきGroovyの側でセミコロンつけちゃったりして、見返してちょっとダサいと思いました。まだそのままですが。
  • 写経したお題は、すごくよく練られていると思いました。特に最後に型を追加するところ、テストは全く変えなくていいことに感動! Javaではこうはいかない。

というわけで、すごく良い経験をさせてもらいました。もっとガンガンかけるようになりたいですね。
@grimroseさん、@y_sumidaさん、ありがとうございました。

次回

第14章(コードカバレッジ)、第15章(継続的テスト)が対象です。次回も楽しみ!!
『JUnit実践入門』写経・実践会 in 横浜 #6 - connpass

というわけで今回も、@shinyaa31さん、横浜タネマキさん、参加者の皆様、ありがとうございました!