3

Railsアプリのテストを作成するためにRSpecを使い始めたいのですが、Test::Unitを使用して作成された既存のテストがたくさんあります。すべてのテスト(またはすべての単体テスト、機能テストなど)を、次のようなコマンドラインから簡単に実行できるようにしたいと思います。

rake test:units

または何でも、Test :: UnitまたはRSpecで記述されているかどうかに関係なく、すべての単体テストを実行します。そして、私は間違いなく、既存のテストをRSpecに変換するために多くの時間を無駄にしたくありません。それは初心者ではありません。

今のところ、RSpecテストを既存のテストと一緒に、テスト/単体、テスト/機能などで存在させたいと考えています。これを実現するための最良の方法は何ですか?それとも、これはまったく良い考えですか?つまり、私はRSpec(さらに言えばRubyとRails)にかなり慣れていないので、RSpecを分離しておく方が良い方法かもしれません。ただし、ファイルシステムのどこに保存されているかに関係なく、1つのrakeタスクですべてのテストを実行できる必要があり、rcovを使用してテストコーパス全体のコードカバレッジ数を収集する必要があります。私はすでに既存のテストを行っています。

4

1 に答える 1

6

編集: Rspecrailsディレクトリ構造に関するいくつかの間違ったステートメントを修正しました。


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に仕様を探す場所を指示し、他のいくつかの構成オプションがあります。

おそらく最善の策は、dirを持つためのrspecのベストプラクティスに従い、spec単体テストとrspecテストの両方を実行する独自のrakeタスクを作成することです。このようなもの:

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

これにより、rspecテストが実行され、次にTest::Unitテストが順番に実行されます。

于 2010-11-23T19:54:12.830 に答える