我有一个项目我想得到代码覆盖这只是一个不在rails上的标准jruby项目,我想知道如何让rcov工作。我已经试了很长一段时间想要得到结果,我只是不知道发生了什么。我得到了一个覆盖率文件夹来显示,但所有的文件要么得到加载错误,要么得到加载的文件根本没有说他们已经测试过(我知道在一个情况下是balooney,因为我为它做了测试规范)。有谁能向我解释如何让rcov工作,或者为什么我会得到附加的错误?我不明白你应该如何/为什么要对包含的库进行A-I,或者这有什么意义。从我目前所做的工作来看,我只是在我的主appcode目录中运行rcov spec/.rb,它生成了我的coverage文件夹,并且:
RCov规范/.rb
/home/ben/.rvm/gems/jruby-1.6.8/gems/rcov-0.9.11-java/lib/rcov/differential\u analyzer.rb:31警告:跟踪(例如set\u trace\u func)不会捕获没有--debug标志的所有事件
nomethoderror:main:object的未定义方法“describe”
(根)at./spec/ncrf_spec.rb:3
最佳答案
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开始,只有当文件位于中的某个目录中时,才能找到它们,并且相对于Ruby进程的当前工作目录,它们不再被找到。