我有一个项目,我希望获得代码覆盖率。它只是一个标准的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
答案 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进程的当前工作目录找到它们。