2010-12-05 16 views
3

Allright people。私はTDDと一般的にテストが好きです。私は個人的には、開発の際には良い習慣だと思っています。お気に入りのテスト "gem(s)"または "plugins"(ルビーとレールで)

私はルビーを練習しているので、例えばrspecのようないくつかの "テスト用の宝石"を試す必要はないと感じました。私は高レベルのテストのためにCucumberを試し、統合テストのためにはwebratを試しました。

好きな宝石とは何ですか?なぜですか?

ウェブサイトの違いや説明の例を示してください。

たとえば、FWKレールの基本ユニットのテストからrspecに切り替える必要があるのはなぜですか?私たちからカピバラまで?キュウリから食べる?

それはのような無駄なものになります私はそれに対して++++書くとき、それはより表現だと思うので、私は1つそのような:+コンソール出力が、より重要なこととしてを着色している​​ので、私はこの1つが好き+++

この質問が既に存在する場合は、私にリンクを送ってください!

EDIT

は私がより明確にするためにタイトルを変更しました!

答えて

3

Rubyで利用可能なテストフレームワークは非常に狂っていますが、実際には個人的な好みになってしまいます。私の個人的な好みはriot

です。Riotはテストの書き方についていくつかの仮定をしています。 2つの大きな点は、テストごとに1つの「もの」をテストする必要があり、そのアサーションはその「もの」を変更すべきではないということです。これらの前提を立てることで、ブロックごとに(テストごとに1回ずつ)セットアップを実行するだけで済むので、テストは大幅にスピードアップできます。 README

context "An Array" do 
    setup { Array.new } 

    context "with one element" do 
    setup { topic << "foo" } 
    asserts("is not empty") { !topic.empty? } 
    asserts("returns the element on #first") { topic.first == "foo" } 
    end 
end 

topicから

の例では、setupでセットアップだったものを参照してください方法です。これは構文の基本に過ぎません。テストをDRYできる「アサーションマクロ」の考え方があります。また、負のアサーションにassertsの代わりにdeniesを使用することもできます。心の中でこれら二つのことで、上記の例ではiceburgの先端のようなものはまだ

context "An Array" do 
    setup { Array.new } 

    context "with one element" do 
    setup { topic << "foo" } 
    denies("is not empty") { topic }.empty? 
    asserts("returns the element on #first") { topic.first }.equals('foo') 
    end 
end 

として書かれていますが、うまくいけばあなたにそれのための感じの少なくともビットを与えることが考えられます。

私はスピードのことから離れて、私が暴動について最も好きなのは、どのように構造化されているかです。それはいくつかの自由を取り除きますが、悪いことをする自由を本当に奪います。私はそれが問題を抱えているのは、私が悪いテストを書こうとしている時で、それをやり遂げることができないときには、私が一歩踏み出して、自分が何をやっているのかを考えさせることだけです。私はWRTのTDD言及う


もう一つはsporkです。アイデアは、レール環境をロードすると簡単に30〜40秒かかることがあり、それはあなたがtddを行っているときに本当に刺激になることがあります。どのようなsporkがレール環境を設定しているのでしょうか?その後、テストを実行するたびにプロセスをフォークします。すべてがすでにメモリに入っているので、テストが本当に速く始まります。

現在、rspec、cucumber、およびtest/unitをサポートしています。 (私はしばらく時間があるときに暴動の支援に寄付することを予定しています)

+0

私には非常に多くのテストフレームワークがあることを知っています。そのため、すべてを比較するための集中リファレンスを持つことが重要です。 – Pasta

+0

私はsporkのアイデアが好きですが、 "Rails 3.0のサポートは進行中ですが、準備はできていません。masterブランチは安定しており、2.3.xで動作します。 Rspec 2.xのサポートも準備ができていません。 中規模のプロジェクトでも膨大な時間を節約できますが、最新の状態になるのを待つことはできません。 –

2

私はminitestcheatsheet)のように非常に小さく非常に高速です。ユニットテストとスペックシステム(モックとベンチマーク)も含まれています。キュウリなどの構文が「読み取り専用」(PerlやAPLのような書き込み専用言語の反対)のように見えるため、私は個人的に仕様を上回るユニットテストを好む。

+0

脇に:*読書* minitestはまたかなりの学習経験です。 –

+0

@Joerg:「かなりの学習体験」と言っても、深刻で皮肉なことはありますか? –

1

私の現在のお気に入りは、以下のとおりです(CLI用とAruba

Cucumber

  • 自然言語アプローチは大きなプラスです。
  • の機能は、 が実際に開発することに意味があるように簡単に書き込むことができます。

RSpec 2

  • ここでも多くの自然言語アプローチは大きな助けです。私はそれを "肯定する"すべてを嫌う。
  • 私はアルーバと同じようにテストできなかった条件に遭遇しました。
  • 本当に使いやすいです。

Autotest連続試験用です。

  • すべての主要なテストフレームワークを実行できます。
  • これはgrowlをサポートしているので、テストが失敗したときにポップアップが表示されるだけです。
+0

さて、誰もが私にrspecについて話しています、多分私はそれを撃つべきです。 – Pasta

+0

最も確実です。 RSpecの書籍はちょうど落として、基本的なBDDの概念からキュウリとRSpecを使用して最初から最後までプログラムの実際の実装までの全範囲を網羅しています。さらに多くのプラス。確認してください:http://www.pragprog.com/titles/achbd/the-rspec-book –

関連する問題