2010-11-23 14 views
3

RSpecを使って私のRailsアプリケーションのテストを書いてみたいが、Test :: Unitを使って書かれたテストはたくさんある。私はRSpecをRake、Rails、既存のテストとどのように統合すればよいですか?

rake test:units 

か何かのようなもので、単にコマンドラインから(ユニットテスト、機能テストなどのまたは全ての)全てのテストを実行することができるという続けていきたいし、それを持っていると思いますTest :: UnitまたはRSpecで記述されているかどうかにかかわらず、すべての単体テストを実行します。そして、私は間違いなく、既存のテストをRSpecに変換する時間を無駄にしたくありません。それは非スターターです。

今私は、自分の既存のテスト、テスト/ユニット、テスト/機能などの中に私のRSpecテストが存在してほしいと思っています。これを達成する最良の方法は何ですか?それとも、これはまったくいいアイデアですか?つまり、私はRSpec(とRubyとRailsについては全く新しい)ですから、RSpecを別々に保つ方が良いかもしれません。しかし、ファイルシステムにどこに格納されているかに関わらず、1回のレーキタスクですべてのテストを実行できる必要があります。rcovを使用して、テストコーパス全体のコードカバレッジ数を収集する必要があります。私はすでに私の既存のテストでやっています。

答えて

6

編集: Rspecレールのディレクトリ構造に関するいくつかの間違った記述が修正されました。


RSpecのは、通常、次のようになり、別のディレクトリ構造、spec/、でそのテストを置く:

spec/ 
├── controllers 
│   ├── pages_controller_spec.rb 
│   └── users_controller_spec.rb 
├── helpers 
│   ├── pages_helper_spec.rb 
│   └── users_helper_spec.rb 
├── models 
│   └── user_spec.rb 
├── spec_helper.rb 
└── views 
    ├── pages 
    │   └── home.html.haml_spec.rb 
    └── users 
     ├── index.html.haml_spec.rb 
     └── show.html.haml_spec.rb 

それはモデル、コントローラ、ビューの別のディレクトリを持っています。私はTest :: Unitがそのディレクトリをどのように構築しているか正確にはわかりませんが、これはRspecのデフォルトのディレクトリ構造です。 spec_helper.rbファイルに注意してください。このファイルは、スペックを探す場所をRspecに伝えるもので、他にもいくつかの設定オプションがあります。

おそらく、specディレクトリを持つrspecのベストプラクティスに従うだけで、ユニットテストとrspecテストの両方を実行する独自のレーキタスクを作成することをお勧めします。このようなもの:

task :run_tests do 
    system("rspec spec/") 
    system("rake test:units") 
end 

これはrspecテストとTest :: Unitテストを順番に実行します。

+0

RSpecを使用して単体テストや機能テストを作成しないでください。基本的にあなたの答えは、rspecテストは別々のタイプのテストであると私に伝えています。また、この組織体系では、単一のユニットだけをテストするrspecテストと、より大きな機能テストや統合テストとして機能するテストとを分離する方法はないようです。私は私のテストでこのレベルの分離を維持できるようにしたいと思います。私が取り組んでいるような大規模なプロジェクトでは、単一のカテゴリのテストを受け入れることはできません。 – Jeff

+0

正常終了した場合、コントローラまたはモデルのみをテストするRspecテストはユニットテストです。彼らはあなたがテストしたいものをテストすることができます。 rspec_railsをインストールすると、モデル、ビュー、コントローラ、ヘルパーをユニットとしてテストすることを前提としています。ただし、機能テストとして機能するテストをさらに作成することもできます。 Rspecが作成するディレクトリに限定されません。あなたは簡単に "機能"ディレクトリを作成し、そこにすべての機能テストを置くことができます。 – jergason

関連する問題