11

簡単な紹介付きの2部構成。イントロ:私はPerlからRubyに来ていますが、テストフレームワークの選択肢の中で少し迷っています。おそらく、単一の、万能の最良の選択はないことを理解していますが、私は競技場の明確な画像を取得することさえできません。

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

第二に、組み込みのオプションに加えて、ビヘイビア駆動テスト用のRspec、Cucumber、および会社があります。コミュニティはこのスタイルとこのフレームワークに強く傾いていますか?Rspecから始めるべきですか?

3つすべてで少し遊んでみますが、Ruby 1.9でのテストに関して、(もしあれば)どのようなコンセンサスが形成されているのか知りたいです。

(私自身と興味のある人へのリマインダーとしての簡単なフォローアップ。さまざまなRubies1.8から1.9.1でのTest:: UnitとMiniTestのさまざまな呼び出しの便利な概要については、このリンクを参照してください。)

4

5 に答える 5

7

私はRspecを1年ほど使用しています。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のようなカバレッジツールについても検討する必要があります。これはrspecと統合され、コードがテストされていない場所を教えてくれます。

于 2009-07-28T17:20:51.107 に答える
6

コンセンサスはありますか?私はそうは言わないでしょう。TDD / BDDを使用することには強いコミュニティの声がありますが、それでも普遍的ではありません。フレームワークは、そもそも実践を適用するよりもおそらく重要ではありません。

minitestは、Test :: Unitの1.9の代替品であり、下位互換性のために新しいライブラリのラッパーとしてのみ存在すると思います。ミニテスト専用のルートを取る方が前向きだと思います。

RSpecは、多少異なる考え方です。「従来の」xUnitの影響を受けたフレームワークによってあまり明確に注入されていません。あなたがそれを好むかどうかを確認するために時間を費やす価値があります。

ショルダーもあります。1.9でどのようにテストされているかはわかりませんが、Test :: Unitのラッパー/拡張機能であるため、おそらく機能します。

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

いずれの場合も、定期的な更新の証拠を見つけることができるフレームワーク、オープンで人口の多いコミュニティ、嫌いではないAPIがその役目を果たします。あなたが何をしたとしても、後で撃墜される可能性は低いです。

于 2009-07-28T18:18:07.370 に答える
4

RSpecは、「TheRailsWay」のような人気のあるRailsの本のコンセンサスです。長所IMHOは、英語のように読み取るテスト、英語のように読み取る出力形式、およびオンザフライマッチャーです。短所は速度が遅く、ライブラリは「魔法のような」と感じることがあります。つまり、Rubyと単体テストに精通しているコーダーにはあまりにも異質です。RSpecは、CucumberとGherkinも提供しています。これらは、顧客に受け入れられるのに役立つストーリーをユーザーに書き込む方法です。

MiniTestはRuby1.9に組み込まれています。長所IMHOは高速で、他の言語のコーダーの読み取り/書き込みが非常に簡単で、実際のコードで使用するのとほぼ同じコードスタイルを使用するテストを実行します。MiniTestには、ほとんどの人が知っているよりもはるかに多くのものがあります。たとえば、MiniTest SpecにはRSpecに似たBDDマッチャーがあり、MiniTest Mockはモックシステムであり、MiniTestBenchmarkはパフォーマンスプロファイリング用です。

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

于 2011-04-30T19:11:31.510 に答える
3

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

rspecを使用して、FactoryGirlやMachinistなどを取得してテストデータを生成します。フィクスチャは使用しないでください。

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

于 2009-07-30T11:26:45.297 に答える
1

RSpecは素晴らしいですが、最近、 Ruby1.9.xに付属するMinitestの背後で多くの議論と動きがあったと思います。RSpecの優れた点がたくさんありますが、よりスリムで簡潔です。

于 2012-05-03T13:08:25.013 に答える