Интерфейсы и пустые классы в покрытии кода

Я использую 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> пометить и исключить их по отдельности. Тем не менее, это множество файлов, которые нужно исключить, когда их не следует включать в первую очередь.

Я что-то не так делаю или это стандартное поведение?

4

Решение

Вы можете попробовать улучшить каталог исключений следующим образом:

<exclude>
<directory suffix="Interface.php">.</directory>
</exclude>

В противном случае вы можете пометить непосредственно в коде правильную аннотацию, описанную в Игнорируемом коде. Блоки документа, следующим образом:

<?php
/**
* @codeCoverageIgnore
*/
interface Foo
{
public function bar();
}

Или вы можете пометить как покрытый метод класса интерфейса в тестовом примере, см. Дополнительную информацию в документе здесь. Как пример:

 /**
* @test
* @covers Bar::foo
* @covers BarInterface::foo
*/
public function foo()
{
....
}

Надеюсь это поможет

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector