如何使用Netbeans / PHPStorm / PHPUnit集成从代码覆盖中排除文件/代码块

时间:2010-07-08 01:43:00

标签: netbeans phpunit code-coverage phpstorm

要求:

  • 使用PHPUnit的Netbeans(6.9)
  • 编辑:同样适用于PHPStorm

如何:

  • 从代码覆盖率中排除行。
  • 从代码覆盖范围中排除代码块(行)。

3 个答案:

答案 0 :(得分:38)

忽略方法代码块:

/**
 * @codeCoverageIgnore
 */
function functionToBeIgnored() {
    // function implementation
}

忽略类代码块:

/**
 * @codeCoverageIgnore
 */
class Foo {
    // class implementation
}

正如@ david-harkness所说,忽略个别界限:

// @codeCoverageIgnoreStart
print 'this line ignored for code coverage';
// @codeCoverageIgnoreEnd

可以在忽略代码块标题下的PHPUnit Documentation中找到更多信息。

答案 1 :(得分:25)

如果您尝试实现100%的代码覆盖率,但有一条或多条线无法测试,则可以使用特殊注释将它们包围起来。它们将在代码覆盖率报告中被忽略。

if (($result = file_get_contenst($url)) === false) {
    // @codeCoverageIgnoreStart
    $this->handleError($url);
    // @codeCoverageIgnoreEnd
}

编辑:我发现Xdebug经常认为结束括号是可执行的。 :(如果发生这种情况,请将结束标记移到它下面。

答案 2 :(得分:3)

首先确保您拥有最新且最好的phpunit,否则代码ignore可能会丢失。接下来创建一个看起来像这样的phpunit.xml文件:

<phpunit colors="true">
    <filter>
        <blacklist>
            <file>file1.php</file>
            <file>file2.php</file>
        </blacklist>
    </filter>
</phpunit>