也许我错过了一个细节,但我为单例_clone方法编写了一个小测试用例,但它没有在代码覆盖率报告中显示出来.
/**
* @covers ErrorHandling::__clone
*/
public function test__cloneNotCloneable(){
$class = new ReflectionClass('ErrorHandling');
$method = $class->getMethod('__clone');
self::assertTrue($method->isFinal(), '__clone method is not final.');
self::assertTrue($method->isPrivate(), '__clone method is not private.');
}
Run Code Online (Sandbox Code Playgroud)
__clone方法是常规(邪恶)单例的常用私有/最终__clone().
/**
* Define __clone as final and private to dissallow cloning.
*/
private final function __clone(){}
Run Code Online (Sandbox Code Playgroud)
我知道这可能是针对此的过度测试,但代码覆盖率报告是一种"做得好"的工作的图形表示.有没有办法在代码覆盖率报告中标记为此方法?
Dav*_*ess 14
该@covers标签告诉你PHPUnit的打算测试命名的方法; 它并没有标记方法为已被测试.由于您无法调用该方法,因此Xdebug不会告诉PHPUnit其代码已被执行,并且它将永远不会包含在您的报告中.
最好的办法是告诉PHPUnit使用@codeCoverageIgnoredocblock标记忽略报告中的方法.
/**
* Define __clone as final and private to dissallow cloning.
*
* @codeCoverageIgnore
*/
private final function __clone() { }
Run Code Online (Sandbox Code Playgroud)
您可以通过将它们包含在一对单行开始/结束注释中来忽略任何范围的行.
// @codeCoverageIgnoreStart
private final function __clone() { }
// @codeCoverageIgnoreEnd
Run Code Online (Sandbox Code Playgroud)
最后,您可以通过向其添加单行注释来忽略单行.
private final function __clone() { } // @codeCoverageIgnore
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |