2010-07-08 45 views

回答

16

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

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

编辑:我发现Xdebug的往往认为括号来执行的。 :(如果发生这种情况,将结束标签下方

+0

我有一个旧版本的PHPUnit,所以代码没有工作。我明白了,但谢谢。即使更好的解决方案是使用phpunit.xml =>我张贴答案.. – Alfred 2011-02-07 02:15:50

+0

确认与PHPStorm:需要移动结束标记后面的括号。 – tivnet 2015-06-04 19:40:24

2

首先确保您有最新和最伟大的PHPUnit否则代码忽略可能会丢失接下来创建一个phpunit.xml文件看起来是这样的:。

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

您的问题是关于排除上面不会执行的行和块 - 它会忽略整个文件。另外,如果您使用白名单(我的公司),则黑名单将被忽略。 – 2011-02-08 03:11:30

+0

哎呀,谢谢大卫。这个问题很久以前就被问及它所说的文件中的标题。但是,谢谢你的信息。 – Alfred 2011-02-08 13:30:09

20

要忽略方法的代码块:

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

要忽略类代码块:

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

而作为@大卫 - 哈克尼斯说,忽略各行:

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

更多信息,可以在PHPUnit Documentation被发现忽略代码块标题下。