Ruby 1.9.xのテストフレームワークについてのコンセンサスはありますか? [閉まっている

StackOverflow https://stackoverflow.com/questions/1195327

  •  19-09-2019
  •  | 
  •  

質問

簡単なイントロを備えた2パーター。イントロ:私はPerlからRubyに来ていますが、テストフレームワークの選択の中で少し迷子になりました。私はおそらく一つの、オールラウンドがないことを理解しています 一番 選択ですが、競技場の明確な絵を撮ることさえできません。

それで、最初に、ミニセストまたはテスト::ユニット?私はちょうど1.9.1がデフォルトであることに気付きました。すべての古いテスト::ユニットのチュートリアルがまだ正常に機能しているので、私は気づいていませんでした。もし、あんたが require test/unit, 、実際には、テスト:: unitエミュレータ(!)として最小化されます。私の最初の考えは、Minitestのデフォルトの選択肢に行くことでした(一度それがそこにあることを知った後)が、非常に最近の本でさえ、それを教えることに興味がないようです。 Ruby Best Practices 2つの間には「大きな違いがあります」と言いますが、彼はそれらに対処しないことを選択します。彼はまた、すべてのテストをテスト:: unit(プラスカスタムアドオン)を使用して実行します。新しいPickaxeは、Minitestについてもほとんどありません それ自体, 、そしてテストの章では、Minitestのテスト::ユニットエミュレーションバージョンも使用します。それでは、私の最初の質問を明確にするために:Minitestは貧弱な最初の選択肢ですか?デフォルトでテスト::ユニットエミュレーターを使用する必要がありますか?

第二に、組み込みのオプションを超えて、行動駆動型テストのためのRSPEC、Cucumber&Companyがあります。コミュニティはこのスタイルとこのフレームワークに強く傾いていますか? RSPECから始めるだけですか?

私は3つすべてで少しプレイしますが、Ruby 1.9でのテストについてどのようなコンセンサスが形成されているのかを聞きたいと思います。

(自分自身と興味のある方へのリマインダーとして、簡単なフォローアップ。参照してください。 このリンク さまざまなルビー1.8〜1.9.1のさまざまな呼び出しの概要::ユニットとミニセストの概要については。

役に立ちましたか?

解決

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

Minitestは、Test :: Unitの1.9代替品であり、これは新しいライブラリの周りのラッパーとしてのみ存在し、後方互換性のために存在します。最小限のルートを取ることは、より前向きになると思います。

RSPECはやや異なるテイクです。「伝統的な」Xunit影響を受けたフレームワークによって明らかに注入されていません。あなたがそれを好むかどうかを確認するために時間を費やす価値があります。

あります shoulda. 。 1.9でテストされた方法はわかりませんが、テスト::ユニットのラッパー/拡張機能の方が多いので、おそらく機能します。

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

すべての場合において、定期的な更新の証拠を見つけることができるフレームワーク、オープンで人口の多いコミュニティと嫌いなAPIが仕事をすることを言うでしょう。あなたがあなたがするどんな選択でも何でもしたことで、後で撃downされることはまずありません。

他のヒント

私は1年ほどRSPECを使用しています。テスト::ユニットから切り替えました。特に、テストされているものを読みやすい方法で印刷できるからです。

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

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と統合され、コードにテストがない場所がわかります。

RSpec is the consensus of popular Rails books like "The Rails Way". Pros IMHO are tests that read like English, output formats that read like English, and on-the-fly matchers. Cons are slow speed and the library sometimes feels "magical" i.e. too foreign to coders who are more familiar with Ruby and unit tests. RSpec also offers Cucumber and Gherkin, which are ways to write users stories that are useful customer acceptance.

MiniTest is built into Ruby 1.9. Pros IMHO are fast speed, very easy to read/write for coders of other languages, and tests that use much the same code style you'd use in your real code. MiniTest has much more than most people know, for example MiniTest Spec has BDD matchers akin to RSpec, MiniTest Mock is a mocking system, and MiniTest Benchmark is for performance profiling.

In my personal experience, people who build Rails apps tend toward RSpec, and people who build pure Ruby code tend toward MiniTest Unit, Spec, Mock, Benchmark, and so on.

I personally perfer rspec. I found that focusing my tests on behaviour really helped me get around what I was trying to do.

With rspec go and get something like Factory Girl or Machinist to generate your test data, don't use fixtures.

With regard to what Mike said, the rspec project is fairly active with new versions being released normally with each version of rails to help it keep up with the development of the framework.

RSpec is nice but I think recently there has been a lot of talk and movement behind Minitest which comes with Ruby 1.9.x. It has a lot of the niceties of RSpec but is much leaner and and concise.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top