RCov与JRuby

时间:2012-11-10 06:46:50

标签: ruby unit-testing rspec tdd rcov

我有一个项目,我希望获得代码覆盖率。它只是一个标准的JRuby项目而不是Rails,我想知道如何让RCov工作。我已经尝试了很长时间才能得到结果,我只是不知道发生了什么。我得到一个覆盖文件夹来显示,但所有文件要么得到装载错误要求,要么加载的文件只是没有说他们已经完成测试(我知道在一个案例中是balooney因为我做了测试规范为了它)。任何人都可以向我解释如何让RCov工作或为什么我得到附加的错误?我不明白为什么你应该为包含的库做一个-I或者它是什么意思。从我到目前为止所做的事情来看,我刚刚从我的主appcode目录运行rcov spec / .rb,并生成了我的coverage文件夹,并且:  rcov spec / .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:未定义的方法`describe'for main:Object   (root)at ./spec/ncrf_spec.rb:3

1 个答案:

答案 0 :(得分:2)

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数组,该数组定义了当您尝试使用.rb加载require文件时搜索$LOAD_PATH个文件的位置。从Ruby 1.9.x文件开始,只有当它们位于{{1}}的某个目录中时才能找到,并且不再相对于Ruby进程的当前工作目录找到它们。