【问题标题】:RCov for RSpec 2 not detecting coverage correctly? (not Rails!)RSpec 2 的 RCov 没有正确检测到覆盖范围? (不是 Rails!)
【发布时间】:2012-02-11 18:18:44
【问题描述】:

前言
我刚刚开始接触 Ruby,不仅尝试学习该语言,还尝试学习一些开发策略。作为一个初学者,我专注于测试和行为驱动开发。 (是的,我这样做是为了比较)

我正在使用我的小型软件项目

  • 单元测试 (TDD)
  • 黄瓜 (BDD)
  • Rspec(TDD 和 BDD)

在不同的地方,我遇到了 RCov 作为一种工具,它可以告诉我我真正测试了多少实际代码。

我在Rakefile 中设置了以下 RakeTask 用于 UnitTest 的协变分析:

desc "Run RCov to get coverage of UnitTests"
Rcov::RcovTask.new(:rcov_units) do |t|
  t.pattern = 'tests/**/tc_*.rb'
  t.verbose = true
  t.rcov_opts << "--html"
  t.rcov_opts << "--text-summary"
  t.output_dir = "coverage/tests"
end

这很好用,我在coverage/tests 中得到了一个漂亮的彩色 HTML 报告。

问题介绍
类似地,我为 RCov 编写了以下 RakeTasks,用于对我的规范进行覆盖分析:

desc "Run RCov to get coverage of Specs"
Rcov::RcovTask.new(:rcov_spec) do |t|
  t.pattern = 'spec/**/*_spec.rb'
  t.verbose = true
  t.rcov_opts << "--html"
  t.rcov_opts << "--text-summary"
  t.output_dir = "coverage/spec"
end

问题定义
但是,coverage/spec 中生成的 HTML 报告看起来有点不完整,几乎失败了。

没有一个测试的方法体被标记为被覆盖,因此是红色的。但是,我 100% 确定它们是在规格范围内执行的。只有行 def method_name(args)class ClassName 被标记为“绿色”。 (以及attr_reader :instance_variable 的行)

我错过了什么吗?


$: ruby --version  
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]

$: rspec --version  
2.8.0

$: rcov --version  
rcov 0.9.11 2010-02-28

$: rake --version  
rake, version 0.9.2

【问题讨论】:

  • 如果可以的话,我建议切换到 ruby​​ 1.9 并将 rcov 替换为 simplecov(仅适用于 1.9)。

标签: ruby rspec rake rcov


【解决方案1】:

我也遇到过类似的问题。 我 100% 确定当我运行它们时不会执行规范 win RCov。但是当我禁用 RCov 时它们会这样做。

将 RSpec 降级到 2.6.0 版对我有帮助。

【讨论】:

  • 不知道为什么不赞成... RCov 和 RSpec (>2.6.0) 似乎存在问题,覆盖率不再有意义。 (我使用的是 RSpec 2.9)
【解决方案2】:

确保您足够早地要求 rcov。

来自http://rubydoc.info/github/relevance/rcov/master/Rcov/CodeCoverageAnalyzer

请注意,在解析要分析的代码之前(即在加载或需要它之前),您必须需要“rcov”。您可以通过使用 -rrcov 命令行选项调用 ruby​​ 或仅:

【讨论】:

    【解决方案3】:

    我通过添加解决了这个问题:

    RSpec::Core::Runner.autorun

    到我的规范文件的底部;甚至可以使用 rspec 2.9

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多