Я использую PHPUnit 5.2.9, PHP 5.6.19 и Xdebug 2.4.0 (не RC) вместе с IDE NetBeans.
Как и в любом другом проекте, я использую интерфейсы и странный пустой расширенный класс. Поскольку эти файлы не содержат исполняемого кода, почему они перечислены в моих отчетах о покрытии кода? Более того, они перечислены как 0%, покрытые 0/0 методами. (Я был бы счастлив, если бы это было 100%, чтобы увидеть меньше красного)
Я пытался исключить их в рамках phpunit.xml
файл:
<whitelist processUncoveredFilesFromWhitelist="false"> // true make no difference
<directory suffix=".php">./Annotation</directory>
<directory suffix=".php">./Cache</directory>
<exclude>
<directory suffix=".php">./*Interface</directory>
<directory suffix=".php">./*/*Interface</directory>
</exclude>
</whitelist>
Но похоже, что globs (*) действительны только для каталогов. Однако я могу использовать <file>
пометить и исключить их по отдельности. Тем не менее, это множество файлов, которые нужно исключить, когда их не следует включать в первую очередь.
Я что-то не так делаю или это стандартное поведение?
Вы можете попробовать улучшить каталог исключений следующим образом:
<exclude>
<directory suffix="Interface.php">.</directory>
</exclude>
В противном случае вы можете пометить непосредственно в коде правильную аннотацию, описанную в Игнорируемом коде. Блоки документа, следующим образом:
<?php
/**
* @codeCoverageIgnore
*/
interface Foo
{
public function bar();
}
Или вы можете пометить как покрытый метод класса интерфейса в тестовом примере, см. Дополнительную информацию в документе здесь. Как пример:
/**
* @test
* @covers Bar::foo
* @covers BarInterface::foo
*/
public function foo()
{
....
}
Надеюсь это поможет
Других решений пока нет …