2

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

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

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

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

第 11 行是课程开始,第 113 行是课程结束。我不知道为什么它没有进入类,为什么它没有为类函数提供语句覆盖。但是,我的测试用例看起来不错,我知道所有条件和分支覆盖都在工作。

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

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

4

2 回答 2

1

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

您可能会检查 xdebug_start_code_coverage() 和 xdebug_get_code_coverage() 的位置,因为它们必须在开始和结束时调用。

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

最好的

拉斐尔

于 2011-01-29T13:11:40.143 回答
0

SimpleTest 有一个相当容易设置的覆盖扩展。IIRC 它仅在 svn 中,而不是正常的打包下载。(通常在 simpletest/extensions/coverage/ 中)

您可以查看文章以获取有关如何实现它的示例:

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

于 2012-03-19T14:49:57.673 回答