PHPStorm: Запускаем тесты на удаленной машине с возможностью отладки
11 Jul 2018
Не секрет, что современные среды разработки полны полезного функционала, освоение которого позволяет поднять продуктивность разработки до невероятных высот.
Сегодня мы реализуем возможность запуска тестов на проекте в каком-либо контейнере (докер, вагрант, удаленное железо), просмотре их выполнения и возможности анализа результатов. И все это не переключаясь на отдельную консоль.
Почему это удобно? Я уже неоднократно ссылался на удобство контейнеров поскольку они обеспечивают повторяемость окружения, скорость развертывания рабочего проекта и схожесть окружений у всех разработчиков в команде.
Долгое время неудобством выступало то, что для тестирования и непосредственной отладки требовалось выполнить переключение на консоль тестовой машины.
Дано:
- окружение под 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 указываем скрипт, который мы написали ранее как экзешник.
Теперь у вас есть не только удобный механизм исполнения тестов, но еще и возможность их отладки.
Литература
Теги: codeception linux php tdd
Категории: Разработка HowTo