[:large]
Rails で Scaffold を作れるようになって20日程度の初心者ですが、趣味と実益を兼ねて Cucumber をインストールして、実際にテストを作成するところまでやってみました。
1.課題認識
2013年5月くらいから新しいチームに参加しているのですが、そこでは次のような課題があります。
2.解決策としての「受入テストの自動化」
昔関わったプロジェクトで、「受入テストの自動化」(ATDD・BDD、以下「BDD」と略記)のツールを自作・導入し、手動で4人日かかっていたリリース時のテストを1時間に短縮したことがあります。
昨年 Agile2012 に参加して BDD ツールとしての Cucumber の存在を知ったこと、また最近 Ruby を勉強し始めたことから、Cucumber で BDD を試してみることにしました。
3.Cucumber のインストール方法
前提として、以下の物をインストール済です。
Ruby | 2.0.0 |
---|---|
Rails | 3.2.13 |
RubyGems | 2.0.3 |
インストールは、以下のコマンドで一発です。(webrat も必要とのことであわせてインストール)
gem install cucumber webrat
"cucumber -h" で、おおよその使い方は把握できます。
4.テストケースの作り方
Cucumber では、テストに当たって次の2つのファイルを作成する必要があるとのこと。
- .feature ファイル:いわゆるユーザ視点での受入条件・テストケースを記述するファイル
- Feature として、Connextra format で User story を書くと良い感じ。
- Scenario として、テストシナリオを Given/When/Then として記述する。
- _steps.rb ファイル:.feature ファイルの Given/When/Then をプログラム的にどう解釈すれば良いのかを記述するファイル。
- 正規表現の出番です。
要は、ユーザ視点でテストケースを書けるよう、_steps.rb で仕様と実装の橋渡しをしているんですね〜
動かす場合はこんな感じ。_steps.rb をパスに追加して実行。
cucumber -r XXX_steps.rb XXX.feature
5.サンプルコード
![Test Driven Development: By Example (Addison-Wesley Signature Series (Beck)) Test Driven Development: By Example (Addison-Wesley Signature Series (Beck))](https://images-fe.ssl-images-amazon.com/images/I/51kDbV%2BN65L._SL160_.jpg)
Test Driven Development: By Example (Addison-Wesley Signature Series (Beck))
- 作者: Kent Beck
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2002/11/08
- メディア: ペーパーバック
- 購入: 1人 クリック: 8回
- この商品を含むブログ (12件) を見る
https://github.com/hageyahhoo/TDD4Ruby/commit/4bb4ad8522ddbd2aee7456902f6ac2df19a19217
詰まったところ
正規表現で取った値を数値として扱うには、to_i を都度呼んであげないといけないのね(そこかよ!)
to_i やらないと、10 * 2 = 1010 になったりして慌てましたw
千里の道も一歩から。
参考にさせていただいたサイト
Cucumber 公式サイト
http://cukes.info/
Cucumberで普通のRubyスクリプトをテストしてみる
http://blog.livedoor.jp/maru_tak/archives/50858037.html