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をサポートしています。 (私はしばらく時間があるときに暴動の支援に寄付することを予定しています)
私には非常に多くのテストフレームワークがあることを知っています。そのため、すべてを比較するための集中リファレンスを持つことが重要です。 – Pasta
私はsporkのアイデアが好きですが、 "Rails 3.0のサポートは進行中ですが、準備はできていません。masterブランチは安定しており、2.3.xで動作します。 Rspec 2.xのサポートも準備ができていません。 中規模のプロジェクトでも膨大な時間を節約できますが、最新の状態になるのを待つことはできません。 –