PHPStorm: Запускаем тесты на удаленной машине с возможностью отладки
Не секрет, что современные среды разработки полны полезного функционала, освоение которого позволяет поднять продуктивность разработки до невероятных высот.
Сегодня мы реализуем возможность запуска тестов на проекте в каком-либо контейнере (докер, вагрант, удаленное железо), просмотре их выполнения и возможности анализа результатов. И все это не переключаясь на отдельную консоль.
Почему это удобно? Я уже неоднократно ссылался на удобство контейнеров поскольку они обеспечивают повторяемость окружения, скорость развертывания рабочего проекта и схожесть окружений у всех разработчиков в команде.
Долгое время неудобством выступало то, что для тестирования и непосредственной отладки требовалось выполнить переключение на консоль тестовой машины.
Дано:
- окружение под vagrant (один из способов собрать такое окружение описан в соответствующей статье).
Надо:
- запускать и отлаживать тесты не выходя из ide
Интеграция тестов
1 - настраиваем удаленный интерпретатор PHP
[gallery ids=”2456,2457” type=”rectangular”]
При выборе удаленного интерпретатора автоматически будут подключены настройки маппинга директорий. Если этого не случилось, то придется вручную прописать соответствие путей на удаленной машине каталогам на локальной системе (пункт path mappings).
В этом же разделе можно указать include path если есть такая необходимость (например подключить pear).
2 - Настраиваем конфигурацию тестового фреймворка.
Необходимо выбрать интерпретатор, указать путь до исполняемого файла и выбрать корректный маппинг,
Обратите внимание на то, что все пути указываются как пути на удаленном хосте.
3 - Задаем run configuration для запуска тестов.
4 - Запускаем из меню run.
Здесь кроется одно большое но: на момент написания данной заметки интеграция codeception испытывает некоторые сложности при работе с сессиями и кукисами. Подробнее об этом можете почитать в описании бага на гитхабе. Там же есть и возможные пути решения.
Отладка тестов
Самое интересное во всем этом - возможность отлаживать код непосредственно во время запуска тестов никуда не переключаясь.
5 - Задаем скрипт, который организует коннект к девелоперской машине
Чуть ранее мы уже рассматривали, как выполнять отладку скриптов командной строки. Напишем маленький хелпер и разместим его с правами на запуск где-нибудь на тестовом стенде.
#!/usr/bin/env sh
IP=`echo $SSH_CLIENT | awk '{print $1}'`
echo #IP
PHP='/usr/bin/env php -d 'xdebug.remote_host=${IP}' -d 'xdebug.remote_autostart=1''
$PHP "$@"
6 - Добавляем .phpstorm_helpers в маппинг
Пре первом запуске тестов IDE складывает в домашний каталог пользователя специальный набор интеграционных скриптов. Если не добавить его в include path, то мы не сможем выполнить отладку: система будет ругаться на то, что соответствия файлов не найдены.
Для этого мы копируем директорию .phpstorm_helpers в корень проекта (исключаем его в .gitignore) и настраиваем сервер
Заходи в раздел настройки серверов и создаем новый. В котором обязательно включаем path mapping, а затем прописываем соответствия каталогов локального и удаленного. При этом не забываем про .phpstorm_helpers. Иначе не будет работать.
7 - Меняем удаленный интерпретатор на наш скрипт
В настройках php указываем скрипт, который мы написали ранее как экзешник.
Теперь у вас есть не только удобный механизм исполнения тестов, но еще и возможность их отладки.
Литература
Категории: Разработка HowTo