Поддержка PHPUnit в PhpStorm

Последнее обновление: 20.09.2016 г.
Публикация: 11.06.2016 г.
Информация

Это руководство описывает поддержку PHPUnit в PhpStorm.


С помощью модульного тестирования, ты можешь убедиться, что части твоего исходного кода работают должным образом. После того как ты внёс правки в код или выполнил рефакторинг, юнит-тесты сразу смогут рассказать тебе в порядке ли существующая функциональность или нет. Только тогда, когда все тесты проходят, ты можешь быть уверен, что не нарушил функциональность существующего кода.

PhpStorm для запуска тестов использует фреймворк PHPUnit. Он широко используется в рамках модульного тестирования на PHP и обеспечивает много возможностей. Давай посмотрим, как он интегрируется с PhpStorm.

Заметка

PHPUnit также можно использовать и для функционального тестирования — написания автоматизированных тестов пользовательского интерфейса любых веб-сайтов. Подробнее об этом: PHPUnit и Selenium.

1. Необходимые условия

Все действия, описанные здесь, были воспроизведены с корректными ожидаемыми результатами при следующем технологическом окружении:

2. Добавление модульного теста в проект

Добавление юнит тестов в проект может быть сделано несколькими способами. Ты можешь создать новый файл через главное меню IDE и выбрать [PHPUnit → PHPUnit test] шаблон файла. Ещё один способ создания теста для некоторого конкретного класса с помощью опции контекстного меню [Go To → Test] (через главное меню IDE [Navigate → Test] или с помощью горячих клавиш Ctrl + Shift + T) и затем выбери Create New Test (создать новый тест).

PhpStorm: Создание нового теста

Любой способ для создания нового теста будет открывать диалоговое окно Create New PHPUnit Test (создать новый PHPUnit тест), в котором ты можешь указать: имя тестируемого класса, а для тестового класса: имя, пространство имён, имя файла и директорию, где PHP файл будет сохранён.

PhpStorm: окно "Create New PHPUnit Test"

После нажатия на кнопку ОК шаблонный класс модульного теста будет сгенерирован.

PhpStorm: Шаблонный класс модульного теста
Заметка

Для получения дополнительной информации о создании модульных тестов смотри раздел руководства: Создание PHPUnit тестов в PhpStorm.


3. Включение PHPUnit в проект

Как ты видишь в сгенерированном классе выше, ещё нет никакой поддержки автодополнения и PhpStorm ничего не знает о классе PHPUnit_Framework_TestCase и его связи с PHPUnit. Почему так? Потому что PHPUnit ещё не включён в твой проект. Давай сделаем это.

Ты можешь получить PHPUnit несколькими способами, в зависимости от предпочтений или стандартов проекта.

Заметка

Ранее ещё был актуален подход получения исходного кода PHPUnit с помощью PEAR. Затем в начале 2007 года Себастьян Бергман (автор PHPUnit) переместил проект на канал pear.phpunit.de, а позже — в конце 2014 года и этот канал был окончательно закрыт.

Для начала проще попробывать последний вариант и работать с PHPUnit из PHAR файла. Указать способ подключения PHPUnit ты можешь в одноимённом разделе окна Settings (Настройки), открыв его с помощью главного меню IDE [File → Settings → Languages & Frameworks → PHP → PHPUnit].

PhpStorm: окно "Settings" раздел "PHPUnit"

По желанию, ты также можешь указать путь к файлу конфигурации phpunit.xml, или путь к файлу начальной загрузки (для запуска произвольного кода PHP перед запуском юнит-тестов). После завершения настройки, ты получишь полную поддержку автодополнения всех классов и функций PHPUnit.

PhpStorm: Поддержка автодополнения классов и функций PHPUnit
Внимание

Если ты хочешь получить пример класса для тестирования и набор модульных тестов для его проверки, то используй этот GitHub Gist.


4. Создание конфигурации запуска

Для запуска юнит-тестов следует создать новую конфигурацию запуска используя следующие пункты главного меню IDE: [Run → Edit Configurations...]. Далее необходимо добавить конфигурацию типа PHPUnit и дать ей имя. Затем, ты можешь указать какие тесты должны быть запущены (все тесты в директории, определённого тестового класса или одного конкретного теста). Добавление аргументов в Test Runner options (параметры для запуска тестов) или параметры интерпретатора PHP также поддерживаются. На скриншоте ниже для тестов указана директория проекта целиком.

PhpStorm: Создание конфигурации запуска для PHPUnit"

Также во избежание ошибки, как на скриншоте выше, необходимо предварительно настроить секцию Development environment (среда разработки) в разделе PHP используя следующие пункты главного меню IDE: [File → Settings → Languages & Frameworks → PHP].

PhpStorm: окно "Settings" раздел "PHP"
Внимание

Возможно для корректного запуска тестов понадобится отключить расширение ImageMagick (php_imagick.dll) в PHP. Также обрати внимание на зависимость версий фреймворка PHPUnit от версий PHP интерпретатора.


5. Выполнение модульных тестов

Теперь ты можешь запустить (или отлаживать) свои модульные тесты! Это очень просто: запусти ранее созданную конфигурацию. Появится новое окно инструмента Run, в котором будут отображаться результаты тестов.

PhpStorm: окно инструмента "Run"

Результаты тестов делятся на 2 основные области. Левая сторона позволяет просматривать, фильтровать результаты тестов и экспортировать их в файл. Также можно пройти по всем юнит-тестам и посмотреть, какие из них выполнились успешно, а в каких произошла ошибка. Правая сторона показывает тебе сырой вывод PHPUnit. В результатах тестов доступно контекстное меню, с помощью которого, например, ты можешь запустить один конкретный тест или перейти к его исходному коду.

PhpStorm: контекстное меню в результатах тестов
Заметка

Имей в виду, что ты можешь отлаживать модульные тесты, а также использовать методы, описанные в руководстве Профилирование PHP-приложений с помощью PhpStorm и Xdebug для анализа их производительности.

Контрольные вопросы

Источники и дополнительные материалы