Ruby存在C1代码覆盖率分析吗?

时间:2008-11-14 05:37:57

标签: ruby-on-rails ruby unit-testing tdd code-coverage

我目前正在使用Rcov为我正在处理的rails项目获取C0代码覆盖率分析。

然而,这些结果实际上毫无意义 - 根据rcov,我有100%的覆盖率(因为它只涵盖了C0分析),而且我几乎没有为目前存在的功能写出一半的测试用例。

我已经习惯了Visual Studio 2008 Team中的代码覆盖率的有用结果,它具有C1覆盖率。是否有任何工具可以为ruby提供类似的覆盖范围?

5 个答案:

答案 0 :(得分:12)

目前,Ruby没有C1覆盖工具。事实上,除了RCov之外,还没有任何覆盖工具。

直到最近,才有可能通过在C中修补或扩展MRI解释器来编写这样的工具。从大约两年前开始,也可以在Java中扩展JRuby,实际上从上个月开始就有了一个端口RCov为JRuby。然而,这需要对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一起使用。但是,我不知道这是否真的有效,也不知道它是否有效。

答案 1 :(得分:1)

DeepCover是当今存在的唯一完整的C1 Ruby Coverage工具。

披露:我是DeepCover的合著者。

答案 2 :(得分:0)

我不知道代码覆盖工具,但ruby有一个名为heckle的变异测试器。

变异测试涉及更改正在测试的代码,并查看这些突变是否导致单元测试失败。

不幸的是,最新的官方gem(版本1.4.1)中存在一些错误,因此您可能希望使用开发分支中的代码构建gem。它只能改变实例方法。我不确定开发分支版本的可靠性。

如果被测试的代码可能会破坏系统(例如删除文件),则应避免进行变异测试。您可能需要阅读a FAQ about hecklea FAQ question mentioning rcov versus heckle

答案 3 :(得分:0)

为了记录,NetBeans 7.0具有Ruby内置的代码覆盖率分析。我找不到任何文件解释它是否是C0或C1,但它是值得关注的东西。

答案 4 :(得分:0)

旧帖子,但是我遇到了它,寻找Ruby覆盖工具。仅供参考,我遇到了名为single_cov的Ruby C1覆盖工具。不知道它有多好,但是这些天我会对其进行一次测试。