J'ai une classe abstraite Exception
dans un espace de nom personnalisé qui n'a pas de méthodes abstraites. Toutes les méthodes sont montrées comme étant couvertes par ses tests (simulés de manière standard). La raison de rendre cette méthode abstraite n'est pas importante.
Ensuite, j'ai environ 10 classes qui s'étendent Exception
mais n'ajoutez ni ne surchargez aucune méthode, propriété, constante, etc. Il est évident que tous ces éléments devraient également être couverts, mais ils sont indiqués comme n'étant pas entièrement couverts. J'ai lu la documentation et fait des recherches sur Internet pendant un certain temps, mais je n'ai pas trouvé la réponse.
- PHP_CodeCoverage 1.1.3
- PHPUnit 3.6.12
- PHP 5.4.4
- Xdebug 2.2.1-5.4-vc9
Tout en annotant avec @codeCoverageIgnore
est une solution, je veux découvrir pourquoi cela se produit de cette façon plutôt que d'obtenir une couverture à 100%.
UPD : sources.
------------- classe abstraite ----------
namespace Jade\Core\Base;
abstract class Exception extends \Exception {
/**
* Additional info for exception
* @var array|null
*/
protected $info;
public function __construct($message, array $info = null, $code = 0, \Exception $previous = null) {
parent::__construct($message, $code, $previous);
$this->info = $info;
}
/**
* Get the Exception additional info
* @return mixed
*/
public function getInfo() {
return $this->info;
}
}
------------- Tests pour la classe abstraite ----------
class ExceptionTest extends \PHPUnit_Framework_TestCase {
/**
* @covers \Jade\Core\Base\Exception
*
* @group public
*/
public function testGetInfo() {
$info = array('info' => 'test');
$stub = $this->getMockForAbstractClass('\Jade\Core\Base\Exception', array('message', $info));
$this->assertEquals($info, $stub->getInfo());
}
/**
* @covers \Jade\Core\Base\Exception
*
* @group public
*/
public function testConstructWithDefaultInfo() {
$stub = $this->getMockForAbstractClass('\Jade\Core\Base\Exception', array('message'));
$this->assertEmpty($stub->getInfo());
}
}
------------- classe qui étend la classe abstraite ----------
namespace Jade\Core\Exceptions;
class Dict extends \Jade\Core\Base\Exception {
}
Mise à jour
Renommer \Jade\Core\Base\Exception
pour éviter une éventuelle collision avec \Exception n'a pas aidé (j'ai essayé \Jade\Core\Base\Ixception
).
Faire de la classe Exception une classe ordinaire et non abstraite n'a pas aidé non plus.