2012-05-14 12 views
6

私は数年前からRyan BatesのRailsCastを見てきました。私はサイトの有料部分の顧客でもあります。私は過去にキュウリのエピソードを見てBDDを学んだ。Rails 3のテストフレームワークの混乱

今、私はTestUnit、RSpec、Capybara、およびMiniTestについて学びました。私は何が何であるのか混乱し始めている。

これらの4つの項目の違いは何ですか?私は明らかにCucumberがプ​​レーンテキスト機能を実行することを知っており、これは統合テストと見なすことができると思います。

しかし、最近のキュウリの最新バージョンではMiniTestが必要ですか?キュウリは単にテストフレームワークの上に座っているDSLですか?

RSpecには、アサーションを行うための独自の構文的砂糖「記述」ブロックがあります。 MiniTestもこの構文をサポートしているようです。

私はCapybaraが生成されたWebページのコンテンツを見るために使用されていることを知っています。ここで

は私の質問です:

私は新しいのRails 3.2のアプリケーションを作成していた場合、私はこれらのテストプログラムのどのような組み合わせを使用する必要がありますか?

Cucumber is a DSL for driving BDD 
Cucumber is for integration tests and is based on creating user stories that are customer-readable 
It implements its tests behind the scenes via MiniTest 
MiniTest is a new testing framework that comes with Ruby 1.9 and is very fast. 
MiniTest is also used for unit testing, such as testing controllers and models 
It does not yet have as many features as RSpec 
Cucumber also uses Capybara to access DOM elements from a javascript-enabled browser simulator such as Selenium 
When you test in Rails, you have the ability to do the following kinds of tests: controllers, views, models, and integration (MVC together) 
Some people just do integration and model testing, because they feel that integration testing handles enough of the controller and view testing itself, and anything too complex can simply be moved up to the model 

あなたは私のためにこれらのアイデアをクリアするために提供することができます任意の助けのためにどうもありがとうございます:どのような追加の参考になることは該当する場合、これらの宝石とそれに関連するプロセスは以下のように、お互いを補完する方法を説明したリストです。

答えて

8

わかりましたので、私自身の経験に基づいて、私がしようとすると説明させ

キュウリは、あなたがビジネス指向のドメインの言語でテストを書くことができますATDD(またはBDD)ツールです。主な用途は、製品所有者との会話ツールです。詳細な要件を記述するのではなく、テスト対象のシステムの例としてこれらの要件を表現します。各キュウリ試験は、事実上、満たされなければならないビジネス要件となる。

キュウバーツール自体は、これらのプレーンテキストステートメントを小さなモジュールに変換してルビコードを実行します。ステップ定義内で使用するRubyライブラリは、作業しているプロジェクトによってまったく異なります。

キュウリを説明する最も安全な方法は、ITとビジネスパートナーの間のコミュニケーションに重点を置いたテストフレームワークなので、人気が高まっている理由です。

RspecとMinitestは、他の強みを持つ他のフレームワークですが、ほとんどがコードであり、技術的でない人にはほとんど読めないという点で、このビジネス上の可読性の要素がありません。それは必ずしも悪いことではありません、特にあなたの製品の所有者がもう少し手を離れている場合。

これはどうやってカピバラのようなものと結びついていますか? Capybaraは、非常に高速なテストのためにRack :: Testフレームワーク上でヘッドレスブラウザを駆動し、可読性の高いDSLを備えた統合テスト自動化ライブラリです。唯一の欠点は、Rack :: Testはjavascriptをサポートしていないため、javascriptテストを実行している場合はSeleniumにフェイルオーバーする手段を提供します。 RspecとCucumberの両方に、このフェイルオーバーをトリガーするメカニズムがあります。

他にも多くのRubyオートメーションライブラリがあります。たとえば、非レールWebアプリケーションに対してテストを行っている場合、キュウリのシナリオはWatir-Webdriverで定義されています。これは、JavascriptモードでCapybaraのような完全なWebブラウザを駆動します。主な相違点は、WWにはCapybaraよりも堅牢なセクターがたくさんあることです。あなたのコードがスーパークリーンでない場合は特に書くのが少し簡単です(CapybaraはID、Value、

あなたのユニットテストには、RSpecやMinitestを使用したいと思うでしょう)、あるいはデフォルトのTest :: Unitを使用したいと思うかもしれません。統合テストのためのキュウテストシナリオ用の共通言語用。そうでない場合は、統合テストをRspecの例またはそれと同等のものとして書くことができます。

+0

非常に役に立ちます。 DVGありがとうございました。 – Saim