Как настроить запуск PHPunit на PHPStorm + Windows WSL, Docker Desktop
Базовая настройка Докера в PHPStorm
Сначала нужно настроить подключение WSL к докеру.
Для этого просто выбираем "Docker for Windows" в File > Settings > Build, Execution, Deployment > Docker:
Настройка через Docker image
Так мы настраиваем запуск теста через Docker, с указанием какой именно имейдж использовать при запуске. PHPStorm будет запускать свой контейнер на базе указанного имейджа (FROM image) кажды раз при запуске теста и удалять его по завершению теста.
Путь /opt/project
в настройках - это WorkingDir
папка внутри создаваемого контейнера, в которую маунтится папка текущего проекта. Т.е. /opt/project
- это папка текущего проекта.
Пример mounts конфига из контейнера со скринов ниже:
"HostConfig": { "Binds": [ "\\wsl$\Ubuntu\home\domains\qr-product-nutrition:/opt/project:rw" ], ... } "Mounts": [ ... { "Type": "bind", "Source": "\\wsl$\Ubuntu\home\domains\qr-product-nutrition", "Destination": "/opt/project", "Mode": "rw", "RW": true, "Propagation": "rprivate" } ],
Создаем CLI интерпритатор на базе Docker image:

Интерпритатор создан (выбираем его, если не выбралось автоматически):
Конфигурируем "Test Framework" под созданный интерпретатор
Это - конфиг для запуска тестов. Здесь мы будем использовать только что созданный интерпритатор:
Проверка
Пробуем запустить отдельный тест кейс и видим что все работает:
Заметки
Если в будущем вы Удалите CLI интерпритатор и создадите его заново, то в настройках Test Framework интерпритатор станет недоступным (скорее всего здесь он связывается по созданному ID интерпритатора). Понять существует ли интерпритатор можно обратив внимение на его название (оно будет undefined):
В этом случае вам нужно пересоздать интерпритатор (настройку) и выбрать его заново.
Если в будущем вы пересоздадите имейдж, то все также будет работать, важно только чтобы название имейджа не изменилось.
Настройка через docker-compose
Такой тип настройки будет использовать текущий контейнер который описан в docker-compose.yml
файле. В этом случае PHPStom не будет создавать свой контейнер, а будет использовать "наш".
Если "наш" контейнер не запущен в момент запуска теста, то PHPStorm его запустит, используя настройки из docker-compose.yml
файла.
Создаем CLI интерпритатор на базе docker-compose:

Настроим созданный интерпритатор:
- Переименуем (чтобы иметь более говорящее название).
- Укажем чтобы он подключался к существующему контейнеру (если не указать, то шторм будет создавать свой контейнер, на базе docker-compose.yml настроек).
- Проверим что все работает.
Выбираем интерпретатор в настройках PHP:
Конфигурируем "Test Framework" под созданный интерпретатор

