Исключение интерфейса PHP из покрытия кода PHPUnit - PullRequest
3 голосов
/ 03 июня 2011

У меня есть тест PHPUnit, который тестирует класс с именем HelpTokenizerTest. Этот класс реализует TokenizerInterface. По какой-то странной причине я не могу исключить TokenizerInterface из покрытия кода.

Он отображается в отчетах о покрытии кода как не покрытый, несмотря на использование @codeCoverageIgnore или даже @ codeCoverageIgnoreStart / End.

Есть идеи?

Я не хочу, чтобы интерфейс включался в тестовое покрытие, поскольку он ничего не делает. Какой смысл тестировать интерфейс.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Вы можете использовать @ codeCoverageIgnore в качестве комментария в начале файла, чтобы получить 100% охват 0/0.

<?php // @codeCoverageIgnoreStart 
interface MyInterface
{
    public function myfunction();
}

Обратите внимание, что он не работает в блоке комментариев.

Проблема открыта на github в PHPUnit: https://github.com/sebastianbergmann/phpunit/issues/497

2 голосов
/ 03 июня 2011

При использовании phpunit.xml вы можете настроить фильтры для исключения файлов с определенными именами, в определенных папках или с определенным расширением.

см. документацию для него

Пример:

<testsuite name="Application Test Suite">
    <directory>./application/</directory>
</testsuite>

<filter>
    <blacklist>
        HERE
    </blacklist>
       or alternatively
    <whitelist>
        <directory suffix=".php">../library/</directory>
        <directory suffix=".php">../application/</directory>
        <exclude>
            AND HERE
            <directory suffix=".phtml">../application/</directory>
        </exclude>
    </whitelist>
</filter>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...