然而,这些结果几乎毫无意义-根据rcov的说法,我的覆盖率达到了100%(因为它只涵盖了C0分析),但是我仅编写了现有功能不到一半的测试用例。
我习惯于从Visual Studio 2008 Team的代码覆盖率中获得有用的结果,该工具具有C1覆盖率。 是否有任何提供类似Ruby覆盖率的工具?
目前,Ruby 没有 C1 覆盖率工具。实际上,除了 RCov 以外,没有任何覆盖率工具。
直到最近,编写类似工具的唯一方法是通过在 C 中修补或扩展 MRI 解释器。大约两年前开始,在 Java 中扩展 JRuby 也成为可能,实际上自上个月以来就有了 JRuby 的 RCov 移植版。不过,这需要对 Ruby 和 C 的知识,以及相当深入的知识,因为调整 MRI 内部结构并不适合心脏虚弱的人。
但只有在 Rubinius 上,才能编写动态分析工具,例如代码覆盖工具,并在 Ruby 本身中进行编写,使得工具编写对更多的 Ruby 社区成员来说易于掌握。我希望这将与工具供应商的重要财政支持(许多主要 IDE 供应商正在开发或已经推出 Ruby IDE,包括 CodeGear(前 Borland)、IntelliJ、NetBeans、Eclipse、SapphireSteel(针对 Visual Studio 的 Ruby in Steel)甚至是 Microsoft)相结合,促进 2009 年 Ruby 工具空间的快速创新,并且我们将看到像 C1、C2 覆盖率、NPath 复杂度、更细粒度的分析等等。
在那之前,我唯一想到的办法是使用 Java 工具。JRuby 的开发者尝试生成适当的魔术元数据,使其生成的字节码至少可以被 Java 工具穿透。因此,也许可以用 Java 覆盖率工具来处理 JRuby。不过,我不知道这是否实际可行,也不知道是否被认为是行之有效的方法。
虽然这是一篇旧文章,但我在寻找 Ruby 覆盖工具时遇到了它。FYI,我发现了一个名为 single_cov 的 Ruby C1 覆盖工具。不知道它有多好,但我会在未来的某一天进行测试。
我不知道代码覆盖工具,但是Ruby有一个名为Heckle的变异测试器。
变异测试涉及更改正在测试的代码,并查看这些变异是否导致单元测试失败。
不幸的是,最新的官方gem(版本1.4.1)存在一些错误,因此您可能希望使用开发分支中的代码构建gem。它只能突变实例方法。我也不确定开发分支版本的可靠性。
如果正在测试的代码可能会破坏系统(例如删除文件),则应避免进行变异测试。您可能想阅读关于Heckle的常见问题和提到rcov与Heckle的常见问题。