Использовать удаленное покрытие PHPUnit в PhpStorm

Я работаю в следующей настройке:

Работает виртуальная машина разработки, где я могу получить доступ к базе кода и использовать ее в качестве местоположения проекта в PhpStorm. Все (nginx, база данных, phpunit, ...) работает на этой виртуальной машине. У меня есть сетевой диск, подключенный к этой виртуальной машине, но я не могу получить доступ к каталогу проверки.

Я настроил PHPUnit для создания cover.xml, к которому я могу получить доступ с моего хоста.

Теперь я хочу использовать эти данные, чтобы показать мне покрытие кода в PHPStorm, но похоже, что для этого нет возможности использовать внешне сгенерированный файл покрытия. Я запускаю модульные тесты удаленно на ВМ, не используя функции IDE (потому что я не могу найти способ запустить тесты удаленно).

Есть какой-нибудь твик или вариант, который я не узнал?

2 ответа

Решение

Да, вы можете использовать любой coverage.xml внутри IDE, если он имеет правильные имена файлов (даже если он был сгенерирован где-то еще). Но это должно быть сделано вручную и не очень удобно использовать на частой основе.

Идея заключается в следующем:

  1. Запустите ваши тесты PHPUnit на удаленной машине и сгенерируйте coverage.xml,
  2. Обработайте его, используя любой подходящий инструмент для замены удаленных путей на локальный путь (например, некоторую пользовательскую цель Phing; простой поиск + замена в вашем текстовом редакторе или любой другой). Это, конечно, если удаленные пути отличаются от локальных. В противном случае просто пропустите это.
  3. Скажите IDE, чтобы использовать этот файл для отображения подробностей покрытия через Инструменты | Показать данные покрытия кода - прикрепить туда нужный файл.
    Пожалуйста, обратите внимание: скорее всего (не использовал это сам в течение длительного времени, поэтому, возможно, он был изменен с тех пор), вам придется удалять, а затем снова добавлять такой файл каждый раз, когда вы получаете новый cover.xml (это самое большое раздражение) - IDE кэширует содержимое такого файла. Проверьте этот билет для некоторых деталей.

Обновление: По крайней мере, начиная с PHPStorm 2016.1 или, возможно, ранее (например, Версия 9 или 10) вы можете автоматически получать покрытие кода PHPUnit, используя PHPUnit поверх SSH Server. Вы должны сначала добавить Remote PHP Interpreter, используя шаги в официальном руководстве. Затем просто выберите его в качестве интерпретатора проекта PHP по умолчанию. Когда вы запускаете тест, вы можете нажать "Запустить" MyTest "с покрытием", и он автоматически скопирует и загрузит файл покрытия через SSH.

Источник: https://confluence.jetbrains.com/display/PhpStorm/Running+PHPUnit+tests+over+SSH+on+a+remote+server+with+PhpStorm

Другие вопросы по тегам