【问题标题】:Skipping files in spec/ when running rcov with RSpec 2.5使用 RSpec 2.5 运行 rcov 时跳过 spec/ 中的文件
【发布时间】:2011-07-17 10:59:47
【问题描述】:

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

在旧版本的 RSpec 中,可以使用带有 --exclude "spec/*" 行的 spec/rcov.opts 文件对其进行自定义,但 Rspec 2 似乎不再读取该文件。我尝试创建 .rcov 文件,因为 @ 987654326@ 更改为 .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)

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rspec2 rcov


    【解决方案1】:

    来自RSpec Upgrade file

    在 RSpec-1 中,rake 任务将读取 在来自rcov.opts 的 rcov 选项中 文件。 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
    

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

    【讨论】:

    • 在定义新的 rake 任务时设置选项相当简单——我正在寻找一种方法来自定义现有任务,就像使用 Rspec 1 一样。虽然我想这就是我将要做的如果事实证明这是不可能的,那就去做吧。
    • 你不能。您必须卸载现有任务并重新定义它。
    • 感谢您确认这是正确的方法。太糟糕了,他们删除了自定义它的能力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多