【问题标题】:RCov with JRubyRCov 与 JRuby
【发布时间】:2012-10-30 11:26:48
【问题描述】:

我有一个项目想要获得代码覆盖率。这只是一个不在 Rails 上的标准 JRuby 项目,我想知道如何让 RCov 工作。我已经尝试了很长时间才能获得结果,但我只是不知道发生了什么。我得到了一个要显示的覆盖文件夹,但是所有文件要么在需要时出现加载错误,要么加载的文件根本没有说它们已经过测试(我知道在一种情况下是胡扯,因为我制定了测试规范为了它)。谁能向我解释如何让 RCov 工作或为什么我收到附加错误?我不明白您应该如何/为什么要为包含的库执行 -I 或这样做的意义何在。到目前为止,我一直在从我的主 appcode 目录运行 rcov spec/.rb 并生成我的覆盖文件夹和: rcov 规范/.rb /home/ben/.rvm/gems/jruby-1.6.8/gems/rcov-0.9.11-java/lib/rcov/differential_analyzer.rb:31 警告:跟踪(例如set_trace_func)将不会捕获所有事件没有-调试标志 NoMethodError:未定义的方法“描述”主要:对象 (根)在 ./spec/ncrf_spec.rb:3

【问题讨论】:

标签: ruby unit-testing rspec tdd rcov


【解决方案1】:

RCov 严格限于 Ruby (MRI) 1.8.x 的 Matz's reference implemenation,甚至不适用于 MRI 1.9.x。

SimpleCov 是新的选择,因为它使用新的Ruby Coverage API。 JRuby 有一段时间不支持这个 API,或者至少在生产环境中不支持。 original issue on SimpleCov's bugtracker 没有明确说明它现在可以工作。但是,the issue they files in the JRuby tracker 关于此 Ruby Coverage API 无法正常工作的声明表示此问题现已解决。

我想你应该试试最新版本的 JRuby 和 SimpleCov。

关于另一个话题:

Ruby 的-I 标志将目录添加到$LOAD_PATH 数组,该数组定义当您尝试使用require 加载.rb 文件时搜索它们的位置。从 Ruby 1.9.x 开始,只有当它们位于 $LOAD_PATH 中的一个目录中并且相对于 Ruby 进程的当前工作目录不再存在时,才能找到它们。

【讨论】:

  • 我不知道 RCov 仅限于 1.8.x,感谢有关 SimpleCov 的提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多