Tal vez perdí un detalle, pero escribí un pequeño caso de prueba para un método singleton _clone pero aún no aparece como se probó en el informe de cobertura del código.phpunit - @covers tag not working
/**
* @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.');
}
El método __clone es el habitual __clone privada/final() de un producto único regular (el mal).
/**
* Define __clone as final and private to dissallow cloning.
*/
private final function __clone(){}
sé que es probablemente una exageración para las pruebas de esto, pero el informe de códigos de cobertura es una especie de la representación gráfica de un trabajo 'bien hecho'. ¿Hay alguna manera de marcar este método como cubierto en el informe de cobertura del código?
me vi en el [Manual] (http://www.phpunit.de/manual/3.3/en/code-coverage-analysis.html#code-coverage-analysis.specifying-covered-methods .tables.annotaciones) que puedo usar la etiqueta @covers ClassName ::, que mostrará todos los métodos privados como cubiertos. Si hay una forma de especificar solo un método, todavía tengo curiosidad. –
stefgosselin
La respuesta de @David es correcta, pero te sugiero que crees solo onc trust. No tener singleton hace que probarlo sea realmente fácil;) http://butunclebob.com/ArticleS.UncleBob.SingletonVsJustCreateOne – edorian