私はちょっとした最先端のレールアプリを扱っています。Rails 3、RSpec 2、Rspec-Rails2。
RSpec 2 には、RSpec 1 にある spec:rcov rake タスクが含まれていないようです。(少なくともまだありません)
rspec 2 で rcov を実行したり、これを機能させるために独自の rake タスクを作成したりした人はいますか?
gem ディレクトリを除外するオプションを渡してみてください。または、実行中のレールが rails フラグを使用しているため:
desc "Run all specs with rcov"
RSpec::Core::RakeTask.new(:rcov => spec_prereq) do |t|
t.rcov = true
t.rcov_opts = %w{--rails --exclude osx\/objc,gems\/,spec\/,features\/}
end
たまたま Ruby 1.9x を使用している場合、CoverMe (1.9 で動作する rcov っぽいライブラリ) が動作するようになりました。スナッピーで、RSpec を使用して箱から出してすぐに動作します - ほとんどプラグアンドプレイのセットアップです。rake:spec を実行するたびに、/coverage を静かに実行します。ブリーディング エッジで 1.9.2preview3 を実行しているので、言及したいと思います。これを使用している場合、1.9 の問題が発生する可能性があります。
仕事でsimplecovを使用していますが、簡単で効果的です。特にCIサーバーが心配な場合は、rspecソースを直接変更するよりもクリーンなソリューションであることがわかりました.
これを思いついた -
1) ~/.rvm/rubies//lib/ruby/gems//gems/rspec-rails-2.XXXXX/lib/rspec/rails/tasks/rspec.task をお気に入りのエディターで開きます。
2) このレーキ タスクを追加します。
desc “Run all specs with rcov”
RSpec::Core::RakeTask.new(:rcov => spec_prereq) do |t|
t.rcov = true
end
未解決の問題が 1 つあります。私のrvmインストールフォルダーと、タスクを実行したときに私がいるプロジェクトの両方のすべてのスペックでrspecを実行します。これらの rvm インストール テストをすべて除外する方法がわかりません。誰かがアイデアを持っているなら、私に知らせてください。