Phpstorm + Docker + PHP + PhpUnit

Прежде чем начать, нужно понимать, что Вы уже умеет запускть докер-контейнеры и у Вас уже запущен контейнер, с которым Вы будете работать.

Напомню, что проверить это можно командой:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3b0881c91ed9        lebnik/php:7.0.ct   "/opt/remi/php70/root"   About an hour ago   Up About an hour                        cabinet

Подключаем PHP

Cоздаем баш-скрипт, который будет выполнять команду в запущенном контейнере (я назвал этот файл php.sh) с содержимым:

#!/bin/sh -ex

docker exec -i cabinet php $@

Делаем файл исполняемым

chmod +x php.sh

В PhpStorm открываем настройки PHP и слева выбираем PHP, справа кликаем на значок ... возле слова Interpreter, появляется окно в котором нужно в поле PHP executable так же кликнуть ... и указать путь к файлу php.sh) 

Phpstorm + Docker + PHP + PhpUnit

внизу окна нажимайте на кнопочку OK и еще раз OK.

Подключаем PHPUnit

Проверьте, установлена ли у Вас зависимость в файле composer.json и если нет, то добавляем ее:

    "require-dev": {
        "phpunit/phpunit": "5.*",
    },

и далее выполняем команду

php.sh /usr/bin/composer update phpunit/phpunit

Снова в PhpStorm открываем настройки переходите слева в пункт PHPUnit, тут нужно указать файл vendor/autoload.php относительно корня Вашего проекта и конфигурационный файл phpunit.xml (его содержимое укажу ниже). 

Phpstorm + Docker + PHP + PhpUnit

Содержимое конфигурационного файла phpunit.xml (для фреймворка Symfony который мы кладем в корень проекта)

<?xml version="1.0" encoding="UTF-8"?>

<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="app/autoload.php"
>
    <php>
        <ini name="error_reporting" value="-1" />
        <server name="KERNEL_DIR" value="app/" />
    </php>

    <testsuites>
        <testsuite name="Project Test Suite">
            <directory>tests</directory>
            <exclude>old/dir</exclude>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist addUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">new/dir</directory>
        </whitelist>
    </filter>
</phpunit>

Вот и все, теперь чтобы проверить можно кликнуть правой клавишей мыши по Вашему TestFile.php и в меню выбрать RUN (с зеленым значком), должны запуститься тесты только по этому файлу.

p.s.

  1. если Вы не используете фреймворк Symfony, то значением атрибута bootstrap можно указать vendor/autoload.php
  2. whitelist нужно указывать только, если Вы хотите, чтобы phpunit сгенерировал отчет по покрытию тестами Вашего кода
  3. после того, как Вы сгенерировали и посмотрели отчет о покрытии проекта тестами, Вам может мешать отображение процентов возле каждой директории/файла, чтобы убрать данное отображение, кликните в меню: Tool - Code Coverage Data и удалив отчет из списка нажмите кнопку внизу No Covarage 
  4. Docker + PhpStorm: PhpStorm подчиняется далеко не всем параметрам указанным в phpunit.xml и например для покрытие кода он использует опцию --coverage-clover в которой указывает путь вида /home/yourname/.PhpStorm2016.2/system/coverage Таким образом, если Вы хотите видеть покрытие в PhpStorm не забывайте прокидывать данную директорию в Docker-контейнер:

-v /home/yourname/.PhpStorm2016.2/system/coverage:/home/yourname/.PhpStorm2016.2/system/coverage \

Работа в консоли

Вручную запускать PhpUnit можно просто командой из директории проекта:

vendor/phpunit/phpunit/phpunit

При этом, phpunit поймет, что настройки нужно взять из файла phpunit.xml находящегося в директории, в которой запускается phpunit.

Кстати, посмотреть хелп можно использую флаг

vendor/phpunit/phpunit/phpunit -h

Источники: 1 - 2 - 3 - 4

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:

Справочники и учебники:


Комментарии посетителей:
  • Спасибо за статью!
    05 мая 2017, 03:25 коммент полезен : 0 # Danil1
  • Только есть у меня вопрос, я сделал php.sh, так же сделал его исполняемым, но в командной строке он не запускается вот таким образом: $ php.sh   Работает только $ ./php.sh   Я переименовал файл в dphp и положил его в /usr/bin/dphp    теперь в командной строке можно писать $ dphp -v  и оно работает. Остаётся проблема в шторме, он в окне интерпретаторов пишет "PHP version: Not installed" Я не знаю как это обойти, если есть возможность подскажите.
    05 мая 2017, 03:28 коммент полезен : 0 # Danil (гость)
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » PHP »