Когда CloverCoverage терпит неудачу и проходит одновременно
О преимуществах использования GrumPHP я рассказывал в предыдущих постах. Одним из инструментов, который мы использовали в проектах в течение последнего года или более, является Clover.
Фото Квентина РЭЯ на Unsplash
Некоторое время между тем, когда мы начали его использовать, и этой неделей, он всегда не выполнялся каждый раз на моей локальной машине, но не на машине, на которой мы развертывали наш код.
И нет, это было не потому, что в модульных тестах были неправильные директивы или комментарии, и не потому, что PHPUnit был неправильно сконфигурирован (он выполнял все тесты и сообщал о них, как и ожидалось).
Так что дает?
Когда CloverCoverage терпит неудачу
Версия TL;DR этого:
Вам нужно правильно установить Xdebug, потому что CloverCoverage требует драйвера, то есть Xdebug, для правильной работы. Проблема в том, что если вы используете Homebrew, вы не сможете установить его так, как это могли сделать мы в свое время.
В оставшейся части этого поста вы узнаете, как установить Xdebug, правильно настроить его в конфигурации PHP, правильно настроить конфигурацию PHPUnit, а затем проверить, все ли проверено, поэтому при следующем запуске GrumPHP вы должны получить все зеленые галочки. .
И, в качестве дополнительного бонуса, в следующий раз, когда вы запустите PHPUnit, вы должны получить хорошо выглядящий отчет. Вот что вам нужно сделать.
Во-первых, обратите внимание, что это основано на идее, что вы:
- используя доморощенный,
- установлен PHPUnit,
- установлен PHP 7.1 (на момент написания этого поста я использую PHP 7.1.19),
- Clover не работает должным образом.
Чтобы проверить несколько вещей, выполните следующую команду в терминале :
Убедитесь, что вы используете как минимум PHPUnit 7.1.4.
Затем проверьте версию PHP :
И убедитесь, что вы используете как минимум PHP 7.1.19 (ваши выходные данные не выглядят точно так же, как мои, особенно в том, что касается Xdebug, но в этом суть этого пункта).
На данный момент мы готовы установить Xdebug и начать вносить необходимые изменения в конфигурацию.
1 Установите Xdebug
Причина, по которой мы должны установить Xdebug не так, как раньше, заключается в том, что он больше не поддерживается Homebrew. Не беспокойтесь, так как его так же легко установить через Pecl.
Чтобы установить его, введите в терминале следующую команду :
Затем вы должны увидеть сообщение о том, что оно было установлено и что расширение было добавлено в ваш файл конфигурации PHP. По моему опыту, Пекл не делает последний шаг правильно.
2 Найдите двоичный файл Xdebug на диске
Чтобы решить эту проблему, нам необходимо:
- найдите полный путь расширения Xdebug,
- поместите полный путь к расширению в наш файл конфигурации PHP
Чтобы найти пути, по которым может находиться Xdebug, используйте следующую команду :
Вы можете получить несколько возвращенных путей (хотя в идеале вы должны получить только один). Если вы получаете более одного, найдите тот, который установлен по пути, содержащему каталог Pecl. Вероятно, это будет выглядеть примерно так :
/usr/local/lib/php/pecl/20160303/xdebug.so
Как только вы получите список всех мест , где установлен Xdebug.so, скопируйте путь к файлу, чтобы мы могли настроить PHP для ссылки на него и правильного его использования.
3 Обновить конфигурацию PHP
Далее нам нужно обновить конфигурацию PHP. Сделать это легко, так как нам просто нужно добавить одну строку в файл PHP.ini. Конечно, если у вас запущено несколько версий PHP, то добавление этого в правильный файл конфигурации будет зависеть от версии PHP, которую вы используете.
Если на вашем компьютере запущено несколько версий PHP, у вас будет несколько версий файла конфигурации PHP. Если у вас установлена одна версия, у вас будет один файл php.ini.
Обычно это находится в /usr/local/etc/php/7.1/ как php.ini , если вы используете PHP 7.1, но ваше местоположение может немного отличаться. Но следующий шаг остается прежним.
Сделав это, убедитесь, что вы добавили следующую строку в файл php.ini . На самом деле это может быть любое место в файле, но помните, что вам нужно указать полный путь к Xdebug.so. Таким образом, файл должен содержать эту строку :
zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"
Оттуда все должно работать. Вы можете убедиться в этом , запустив :
И тогда вы должны увидеть следующее сообщение:
PHP 7.1.19 (cli) (построено: 25 июня 2018 г., 10:42:21) (NTS)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2 .6.0, Copyright (c) 2002-2018, Дерик Ретанс
с Zend OPcache v7.1.19, Copyright (c) 1999-2018, Zend Technologies
Обратите внимание на четвертую строку, содержащую примечание о Xdebug. Если вы видите это, то вы готовы идти.
4 Настройка PHPUnit
На этом этапе последнее, что вам нужно сделать, это убедиться, что ваш файл phpunit.xml настроен правильно. Вот простой пример того, как выглядит мой (включая поддержку Clover):
<?xml version="1.0" encoding="UTF-8"?>
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
bootstrap="./tests/bootstrap.php"
backupGlobals="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
>
<testsuites>
<testsuite name="Plugin">
<directory>./tests</directory>
<exclude>./tests/phpunit</exclude>
<exclude>./src/WordPress/*.php</exclude>
</testsuite>
</testsuites>
<logging>
<log type="coverage-clover" target="./coverage-report/coverage.xml"></log>
<log type="coverage-html" target="coverage-report" lowUpperBound="30" highLowerBound="80"></log>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"></log>
</logging>
<filter>
<whitelist>
<directory>./src</directory>
</whitelist>
</filter>
</phpunit>
Затем вы можете вручную запустить PHPUnit и увидеть хороший результат покрытия кода.
Или вы можете запустить GrumPHP, чтобы увидеть сплошную зеленую галочку (при условии, что ваши тесты находятся в пределах диапазона, который вы определили в grump.yml ).
Окончательный результат
Хотя может показаться, что это много шагов (и я полагаю, что это так), установка и запуск этой программы не займет много времени. Надеемся, что приведенное выше пошаговое руководство сэкономит вам немного времени при работе с PHP, PHPUnit и т. д., когда CloverCoverage дает сбой (и одновременно успешно выполняется во время непрерывного развертывания).
В настоящее время я пишу электронную книгу (наряду с другим премиальным контентом). Если вам интересно, посмотрите, что вы получите.



