2009-07-28 5 views
11

クイックイントロを備えた2人のパターです。イントロ:私はPerlからRubyに来ていますが、私はテストフレームワークの選択肢の中で少し失われています。私はおそらく単一のオールアバウトの選択肢がありますが、私は競技場の明確な画像を得ることはできないことを理解しています。Ruby 1.9.xのテストフレームワークに関するコンセンサスはありますか?

最初に、MiniTestまたはTest :: Unit?私はちょうど1.9.1がMiniTestにデフォルト設定されていることに気付きました。以前のTest :: Unitチュートリアルはすべて正常に動作していたので気付かなかった。 require test/unitの場合、実際にMiniTestはTest :: Unitエミュレータ(!)として取得します。私の最初の考えはMiniTestのデフォルトの選択(一度私がそれがそこにあったことを知っていた)に行くことだったが、非常に最近の本でさえそれを教えることに興味がないように思える。 Rubyのベストプラクティスは、2つの間に「大きな違いがあります」と述べていますが、彼はそれに対処しないことを選択します。彼はまた、Test :: Unit(いくつかのカスタムアドオンに加えて)を介して彼のすべてのテストを実行します。新しいPickaxeも、MiniTest それ自体についてはほとんどありません。、そしてテストの章では、Test :: UnitエミュレーションバージョンのMiniTestも使用しています。私の最初の質問を明確にするために:MiniTestは最初の選択肢が貧弱ですか?私はTest :: Unitエミュレータの使用をデフォルトにする必要がありますか?

第2に、ビルトインオプションを超えて、Rspec、Cucumber &社が動作駆動テスト用です。コミュニティはこのスタイルとこのフレームワークに向けて強く傾いていますか?私はRspecで始めるべきですか?

私は3つすべてで少し演奏しますが、私はRuby 1.9でテストの周りにどんなコンセンサス(もしあれば)が形成されているのか聞いてみたいと思っています。

(クイックフォローアップ、自分自身へのリマインダとして、また興味がある人々のために。様々なルビー1.9.1と1.8でテスト::ユニットとMiniTestのためのさまざまな呼び出しの便利な概要についてはthis linkを参照してください。)

答えて

6

コンセンサスはありますか?私は言いません。 TDD/BDDを使用するための強力なコミュニティの声がありますが、それでもそれは普遍的なものではありません。フレームワークは、最初に練習を適用するよりも重要性は低いでしょう。

私は、MinitestがTest :: Unitの代わりに使われていると信じています。これは下位互換性のために新しいライブラリのラッパーとしてのみ存在します。私は、最小限の特定のルートを取ることがもっと先を見ていると思います。

RSpecは、「伝統的な」xUnitの影響を受けたフレームワークによってあまり知られていません。それはあなたがそれを好むかどうかを確認するためにいくつかの時間を費やす価値があります。

Shouldaもあります。私はどのようにテストされているのかわからないが、それは1.9である:Test :: Unitのラッパー/拡張のほうが多いので、おそらく動作するだろう。

もちろん、楽しいことはありません。いったんテストフレームワークを選択すると、ある種のモックエンジンが必要になります。またはデータフィクスチャの交換。

すべてのケースでは、定期的な更新、公開された人口コミュニティー、嫌いではないAPIの証拠を見つけることができるフレームワークは、その仕事をしてくれます。あなたが何をしようとしても、あなたは後で撃たれることはまずありません。

+1

この時点では良い考えはありません。 RSpecマッチャーまたはMinitestは、より「将来の証明」です。私たちはちょうどShouldaからMinitestに私たちのアプリを移動し、それは十分な価値があった。 –

7

私は1年ほどRspecを使用しています。 Test :: Unitは、人間が読める形式で何がテストされているのかを印刷することができたからです。

散文のように読みます。それは私のために大きなプラスです。しかし、すべての結果と同様に結果は異なります。

describe Model do 
    it "should do what I want" do 
    this.should == that 
    it.should be_nil 
    that.should_not be_true 
    end 
end 

はまた、あなたもRCovのようなカバレッジツールについて考えなければならないテストフレームワークのreguardless。これはrspecと統合され、コードにテストがない場所を教えてくれます。

+0

サンプル(Rspecの実際の動作を示す写真)とRCovの推奨事項をお寄せいただきありがとうございます。 – Telemachus

+2

Ruby 1.9では、組み込みのMiniTest/Specはこれと同じsynaxを使い、かなり高速に実行できるという利点があります。 – cczona

3

個人的にはrspecです。私は、行動にテストを集中させることが、私がやろうとしていることに本当に役立つことが分かりました。

rspecを使って、工場の女の子や機械工のようなものにテストデータを生成させるには、フィクスチャを使用しないでください。

Mikeが言ったことに関して、rspecプロジェクトは、フレームワークの開発についていくために、各バージョンのレールで正常にリリースされている新しいバージョンがかなり活発です。

+0

お薦めいただきありがとうございます。私は少数でなければなりませんが、私はRuby for Rubyに興味があります。私はWebアプリには全く関心がないので、Railsには全く関心がありません。しかし、テストフレームワークのための活動は、良いことではないかもしれません。あるいは、少なくとも、物事の仕方を常に再確認したくないです。それでも、私はRspecをチェックするつもりです。 – Telemachus

+0

チェックアウトしてください。 rspecを使ってルビーで書いたものをテスト/スペックすることができます。これは決してレールに触れることがない場合でも実行するのに最適です。 – nitecoder

4

RSpecは、 "The Rails Way"のような人気のあるRailsの書籍のコンセンサスです。 Pros IMHOは、英語のように読むテスト、英語のような出力形式、およびオンザフライのマッチャーです。短所は遅い速度であり、ライブラリはRubyや単体テストに精通しているコーダーにとっては「魔法のように」、 RSpecはキュウリとガーキンも提供しています。これは有用な顧客受け入れであるユーザーストーリーを書く方法です。

MiniTestはRuby 1.9に組み込まれています。プロIMHOは、他の言語のコーダーのための読み書きが非常に高速で、実際のコードで使用するのとほとんど同じコードスタイルを使用するテストです。 MiniTestには、ほとんどの人が知っている以上のものがあります。たとえば、MiniTest SpecにはRSpecに似たBDDマッチャーがあり、MiniTest Mockはモックシステムであり、MiniTest Benchmarkはパフォーマンスプロファイリング用です。

私の個人的な経験では、Railsアプリケーションを構築する人はRSpecになりがちであり、純粋なRubyコードを作成する人はMiniTest Unit、Spec、Mock、Benchmarkなどの傾向があります。

1

RSpecは素晴らしいですが、私は最近、Ruby 1.9.xに付属するMinitestの後ろにたくさんの話と動きがあったと思います。それはRSpecの細部をたくさん持っていますが、はるかに単純で簡潔です。

関連する問題