我有一个项目想要获得代码覆盖率。这只是一个标准的 JRuby 项目,不在 Rails 上,我想知道如何让 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:未定义 main:Object 的方法“描述” (根)位于 ./spec/ncrf_spec.rb:3
最佳答案
RCov严格限制为Matz's reference implemenation Ruby (MRI) 1.8.x,甚至不适用于 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
加载它们。从 Ruby 1.9.x 开始,文件只能在 $LOAD_PATH
中的目录之一中找到,并且不再相对于 Ruby 进程的当前工作目录找到。
关于ruby - 使用 JRuby 进行 RCov,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320000/