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

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

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

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