✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Когда CloverCoverage терпит неудачу и проходит одновременно

16

О преимуществах использования GrumPHP я рассказывал в предыдущих постах. Одним из инструментов, который мы использовали в проектах в течение последнего года или более, является Clover.

Когда CloverCoverage терпит неудачу и проходит одновременно

Фото Квентина РЭЯ на 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.

Когда CloverCoverage терпит неудачу и проходит одновременно

Затем проверьте версию PHP :

И убедитесь, что вы используете как минимум PHP 7.1.19 (ваши выходные данные не выглядят точно так же, как мои, особенно в том, что касается Xdebug, но в этом суть этого пункта).

Когда CloverCoverage терпит неудачу и проходит одновременно

На данный момент мы готовы установить Xdebug и начать вносить необходимые изменения в конфигурацию.

1 Установите Xdebug

Причина, по которой мы должны установить Xdebug не так, как раньше, заключается в том, что он больше не поддерживается Homebrew. Не беспокойтесь, так как его так же легко установить через Pecl.

Чтобы установить его, введите в терминале следующую команду :

Затем вы должны увидеть сообщение о том, что оно было установлено и что расширение было добавлено в ваш файл конфигурации PHP. По моему опыту, Пекл не делает последний шаг правильно.

2 Найдите двоичный файл Xdebug на диске

Чтобы решить эту проблему, нам необходимо:

  1. найдите полный путь расширения Xdebug,
  2. поместите полный путь к расширению в наш файл конфигурации 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 и увидеть хороший результат покрытия кода.

Когда CloverCoverage терпит неудачу и проходит одновременно

Или вы можете запустить GrumPHP, чтобы увидеть сплошную зеленую галочку (при условии, что ваши тесты находятся в пределах диапазона, который вы определили в grump.yml ).

Окончательный результат

Хотя может показаться, что это много шагов (и я полагаю, что это так), установка и запуск этой программы не займет много времени. Надеемся, что приведенное выше пошаговое руководство сэкономит вам немного времени при работе с PHP, PHPUnit и т. д., когда CloverCoverage дает сбой (и одновременно успешно выполняется во время непрерывного развертывания).

В настоящее время я пишу электронную книгу (наряду с другим премиальным контентом). Если вам интересно, посмотрите, что вы получите.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее