我目前正在使用Rcov为我正在处理的 Rails 项目获取 C0 代码覆盖率分析。
然而,这些结果实际上毫无意义——根据 rcov,我有 100% 的覆盖率(因为它只涵盖了 C0 分析),而且我几乎没有为迄今为止存在的功能编写一半的测试用例。
我已经习惯了 Visual Studio 2008 Team 中代码覆盖率的有用结果,它具有 C1 覆盖率。是否有任何工具可以为 ruby 提供类似的覆盖范围?
我目前正在使用Rcov为我正在处理的 Rails 项目获取 C0 代码覆盖率分析。
然而,这些结果实际上毫无意义——根据 rcov,我有 100% 的覆盖率(因为它只涵盖了 C0 分析),而且我几乎没有为迄今为止存在的功能编写一半的测试用例。
我已经习惯了 Visual Studio 2008 Team 中代码覆盖率的有用结果,它具有 C1 覆盖率。是否有任何工具可以为 ruby 提供类似的覆盖范围?
目前,没有针对 Ruby 的 C1 覆盖工具。事实上,除了 RCov ,没有任何覆盖工具。
直到最近,只有通过在 C 中修补或扩展 MRI 解释器才能编写这样的工具。大约两年前,还可以在 Java 中扩展 JRuby,实际上从上个月开始就有一个 RCov 端口用于杰鲁比。然而,这需要 Ruby和C 的知识,以及相当深入的知识,因为摆弄 MRI 的内部结构不适合胆小的人。
但只有使用 Rubinius,才有可能在 Ruby 本身中编写动态分析工具,例如代码覆盖工具,从而使更多 Ruby 社区的人可以使用工具编写。我希望这一点,再加上工具供应商的大量资金支持(许多主要的 IDE 供应商正在开发或已经推出 Ruby IDE,包括 CodeGear(前 Borland)、IntelliJ、NetBeans、Eclipse、SapphireSteel(Ruby in Steel Visual Studio)甚至微软)将在 2009 年导致 Ruby 工具领域的快速创新,我们将看到诸如 C1、C2 覆盖、NPath 复杂性、更细粒度的分析等等之类的东西。
在那之前,我唯一的想法就是使用 Java 工具。JRuby 人试图发出适当的魔法元数据,以使他们生成的字节码至少可以被 Java 工具穿透。因此,也许可以将 Java 覆盖工具与 JRuby 一起使用。但是,我不知道这是否真的有效,也不知道它是否应该有效。
DeepCover是当今唯一完整的 C1 Ruby Coverage 工具。
披露:我是DeepCover
.
我不知道代码覆盖工具,但是 ruby 有一个叫做 heckle 的变异测试器。
突变测试涉及更改正在测试的代码并查看这些突变是否导致单元测试失败。
不幸的是,最新的官方 gem(版本 1.4.1)有一些错误,所以您可能希望使用开发分支中的代码构建一个 gem。它只能改变实例方法。我也不确定开发分支版本有多可靠。
如果正在测试的代码可能会破坏系统(例如删除文件),则应避免突变测试。您可能想阅读有关heckle 的常见问题解答和提及 rcov 与 heckle 的常见问题解答问题。
作为记录,NetBeans 7.0 内置了针对 Ruby 的代码覆盖率分析。我找不到任何解释它是 C0 还是 C1 的文档,但值得关注。
旧帖子,但我在寻找 Ruby 覆盖工具时遇到了它。仅供参考,我遇到了一个名为single_cov的 Ruby 的 C1 覆盖工具。不知道它有多好,但这些天我会给它一个试运行。