トップ «前の日記(2009-06-08) 最新 次の日記(2009-06-10)» 編集

Route 477



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とか情報の多いやつを使っておくもよし。 ものによっては、書き直しの理由が「構文が気に入らない」だったりしますし、そのうち一番多くの人の支持を得られるやつが生き残るんじゃないすかね。