2011-03-17 72 views
4

對於Rails 3應用程序運行rake spec:rcov時,spec/目錄中的文件包含在coverage統計信息中,但我不希望它們是。我只想要我的實際應用程序的覆蓋率統計。使用RSpec 2.5運行rcov時跳過spec /文件中的文件

在老版本的RSpec的,有可能與spec/rcov.opts文件與線--exclude "spec/*"定製這一點,但它似乎該文件是由Rspec的2.我試圖創建以來spec/spec.opts一個.rcov文件更改爲.rspec不再閱讀,但那也沒讀過。

我發現了一些關於如何在定義rake任務時做到這一點的文檔,但我寧可不覆蓋提供的rake任務—看起來這肯定是其他人試圖做的。

如何自定義從覆蓋率統計中排除的文件?

僅供參考,我使用所有相關寶石的版本是:

rails (3.0.5) 
rake (0.8.7) 
rcov (0.9.9) 
rspec (2.5.0,) 
rspec-core (2.5.1) 
rspec-expectations (2.5.0,) 
rspec-mocks (2.5.0) 
rspec-rails (2.5.0) 

回答

6

RSpec Upgrade file

在RSpec的-1,耙任務將在rcov選擇讀 來自rcov.opts 文件。這被RSpec-2忽略。現在RCov選項上直接設置 斜掠 任務:

RSpec::Core::RakeTask.new(:rcov) do |t| 
     t.rcov_opts = %q[--exclude "spec"] 
    end 

檢查的rspec-rails源代碼,我發現了庫定義的:rcov任務,它似乎並不排除rspec的文件夾。

desc "Run all specs with rcov" 
RSpec::Core::RakeTask.new(:rcov => spec_prereq) do |t| 
    t.rcov = true 
    t.pattern = "./spec/**/*_spec.rb" 
    t.rcov_opts = '--exclude /gems/,/Library/,/usr/,lib/tasks,.bundle,config,/lib/rspec/,/lib/rspec-' 
end 

您可能希望刪除該任務並使用自己的設置重新創建它,或定義一個新任務。

+0

定義一個新的rake任務時設置選項非常簡單 - 我正在尋找一種方法來自定義現有的任務,就像您可以使用Rspec 1一樣。雖然我猜這就是我要做的事情,如果它轉向這是不可能的。 – Emily 2011-03-17 14:39:13

+0

你不行。您必須卸載現有任務並重新定義它。 – 2011-03-17 14:40:09

+0

感謝您確認這是您的選擇。太糟糕了,他們刪除了定製它的能力。 – Emily 2011-03-17 15:01:43

相關問題