2009-06-09
■ [ruby] Rubyのテスト環境大戦争
おまいらは本当にテストが好きだな!というわけで、Rubyのテスト関係のライブラリを並べてみた。
テストフレームワーク
- Test::Unit
- Ruby標準添付のユニットテスト用フレームワーク。
- RSpec
- DSLを使う、「BDD」という概念を流行らしたユニットテスト用フレームワーク。
- Cucumber
- 自然言語を使って、ブラックボックステストを記述する。RSpecの「Stories」と呼ばれていた機能が独立した。
あとはShouldaとかbaconとかいろいろありますけども。
モック・スタブライブラリ
モック=あるオブジェクトに期待したメッセージが飛ぶかどうかテストするためのオブジェクト、 スタブ=ネットワークが絡むとか、実際のオブジェクトが使えない場合に使う偽オブジェクト。 と思ってるんですけどどうなんですかね(more: モックとスタブの違い)
- FlexMock
- モック・スタブライブラリ。
- Mocha
- モック・スタブライブラリ。
- RR(double ruby)
- 簡潔な記述を目指したモック・スタブライブラリ。
あとRSpecにもモック・スタブ機能が標準で付いてきます。
テストデータライブラリ
Railsのfixturesみたいに、テスト用のデータを用意するためのライブラリ。
詳しいことは神まとめ http://wota.jp/ac/?date=20090608#p01 を読んでもらうとして:
- fixture
- RailsにはYAMLからテスト用データを作る仕組み(fixture)がありますね。
- Factory Girl
- YAMLを捨てて、Rubyで全部書く。
- Machinist
- Factory Girlのリライト。Fakerもサポートしてます。
- Faker
- 「なんちゃって個人情報」的なライブラリ。適当な名前とか電話番号とかを生成してくれる。PerlのData::Fakerの移植らしい。
まとめ
正直なところ、アツすぎてどれがどれやら分かんないですね(笑)。 好きなのを探して応援するもよし、追いかけるのなんてめんどいぜーという人はTest::UnitとかRSpecとか情報の多いやつを使っておくもよし。 ものによっては、書き直しの理由が「構文が気に入らない」だったりしますし、そのうち一番多くの人の支持を得られるやつが生き残るんじゃないすかね。