Exception
抽象メソッドを持たないカスタム名前空間に抽象クラスがあります。すべてのメソッドは、そのテストでカバーされているものとして示されています (標準的な方法でモックされています)。抽象化する理由は重要ではありません。
Exception
次に、拡張するがメソッド、プロパティ、定数などを追加またはオーバーライドしない約10のクラスがあります。それらすべてもカバーする必要があることは明らかですが、完全にはカバーされていないように示されています。私はドキュメントを読み、しばらくグーグルで検索しましたが、答えが見つかりませんでした。
- PHP_CodeCoverage 1.1.3
- PHPユニット 3.6.12
- PHP 5.4.4
- Xdebug 2.2.1-5.4-vc9
で注釈を付けること@codeCoverageIgnore
は解決策ですが、100% のカバレッジを得るのではなく、なぜこのように起こるのかを知りたいのです。
UPD: ソース。
------------- 抽象クラス ----------
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;
}
}
------------- 抽象クラスのテスト ----------
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());
}
}
------------- 抽象クラスを拡張したクラス ----------
namespace Jade\Core\Exceptions;
class Dict extends \Jade\Core\Base\Exception {
}
アップデート
\Exception との衝突の可能性を避けるために名前を変更\Jade\Core\Base\Exception
しても役に立ちませんでした (試してみ\Jade\Core\Base\Ixception
ました)。
例外クラスを抽象ではなく通常のクラスにすることも役に立ちませんでした。