4

rake spec:rcov为 Rails 3 应用程序运行时,spec/目录中的文件将包含在覆盖率统计中,但我不希望它们包含在内。我只希望我的实际应用程序的覆盖率统计。

在旧版本的 RSpec 中,可以使用spec/rcov.opts带有该行的文件来自定义它,但 Rspec --exclude "spec/*"2 似乎不再读取该文件。我尝试创建一个.rcov文件,因为spec/spec.opts更改为.rspec,但也没有被读取。

我找到了一些关于如何在定义 rake 任务时执行此操作的文档,但我宁愿不覆盖提供的 rake 任务 - 看起来这一定是其他人也尝试过的事情。

如何自定义从覆盖率统计中排除的文件?

作为参考,我正在使用的所有相关 gem 的版本是:

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)
4

1 回答 1

6

RSpec 升级文件

在 RSpec-1 中,rake 任务将从rcov.opts 文件中读取 rcov 选项。RSpec-2 忽略了这一点。RCov 选项现在直接在 Rake 任务上设置:

    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

您可能希望删除该任务并使用您自己的设置重新创建它或定义一个新任务。

于 2011-03-17T14:35:10.097 回答