使用简单框架进行xdebug代码覆盖率分析

时间:2010-12-07 02:27:17

标签: xdebug simpletest

我正在使用简单框架进行单元测试,并使用xdebug进行代码覆盖率报告。让我解释一下我的问题:

  • 我有一个我想要测试的类,我们假设类的名称是pagination.php。
  • 我写了另一个课程进行测试。我写了两个测试用例来测试分页类。
  • 在两个测试用例中有大约12个断言,它给出了正确的结果“Pass”。
  • 现在我想生成代码覆盖率报告,为此我使用xdebug来显示我的测试用例是否包含所有代码。我使用xdebug_start_code_coverage()函数并显示结果我使用xdebug_get_code_coverage()函数。

现在的问题是,当我打印xdebug_get_code_coverage()时,它给我带有文件名,行号和执行时间的2维assosiative数组。结果是这样的:

array
  'path/to/file/pagination.php' => 
    array
      11 => int 1
      113 => int 1

第11行是类的开始,第113行是类的结束。我不知道它为什么不进入类内部,为什么它不给类语句的语句覆盖。但是,我的测试用例看起来还不错,我知道所有条件和分支覆盖都有效。

如果您在这方面帮助我并指导我如何解决这个问题,我将非常感激。

也许我在这里错过了什么。如果你想要更多的东西,请告诉我。

2 个答案:

答案 0 :(得分:1)

我为一个带有调用方法的类实现了一个XDebug-CC,它工作正常。虽然我不得不说我对这个工具如何定义“可执行代码”感到有些困惑,但它肯定会考虑方法。

您可以检查xdebug_start_code_coverage()和xdebug_get_code_coverage()的位置,因为必须在开头和结尾调用它们。

此外,您可以检查您的XDebug版本,因为自该功能发布以来已经有一些准确性改进。

最佳

拉​​斐尔

答案 1 :(得分:0)

SimpleTest具有相当容易设置的coverage扩展。 IIRC只是在svn而不是正常的打包下载。 (通常在simpletest / extensions / coverage /中)

您可以查看文章,了解如何实施它的示例:

http://www.acquia.com/blog/calculating-test-coverage http://drupal.org/node/1208382