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

2355
nico gawenda

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

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

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

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

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

3
Единственная идея, которая приходит на ум, - это посмотреть, как PHPstorm вызывает phpunit (он всегда создает какой-то PHP-файл, который затем выполняется), возможно, вы можете изменить шаблон и затем внедрить данные из удаленной системы. AFAIK Phpstorm не имеет понятия, что Phpunit * не * выполняется в коде в IDE; Phpstorm не имеет понятия, что Phpunit выполняется в коде в какой-либо другой системе. hakre 11 лет назад 0

2 ответа на вопрос

4
LazyOne

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

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

  1. Запустите ваши тесты PHPUnit на удаленной машине и сгенерируйте coverage.xml.
  2. Обработайте его, используя любой подходящий инструмент для замены удаленных путей на локальный путь (например, некоторую пользовательскую цель Phing; простой поиск + замена в вашем текстовом редакторе или любой другой). Это, конечно, если удаленные пути отличаются от локальных. В противном случае просто пропустите это.
  3. Скажите IDE, чтобы использовать этот файл для отображения подробностей покрытия через Инструменты | Показать данные покрытия кода - прикрепить туда нужный файл.
    Пожалуйста, обратите внимание: скорее всего ( не использовал это сам в течение долгого времени, поэтому, возможно, он был изменен с тех пор ), вам придется удалять, а затем снова добавлять такой файл каждый раз, когда вы получаете новый cover.xml (это самое большое раздражение) - IDE кеширует содержимое такого файла. Проверьте этот билет для некоторых деталей .
Большое спасибо, я попробовал это в PHPStorm 5, и это не сработало. Попробую в PHPStorm 6 11 лет назад 0
Я использовал это, когда эта функциональность была только что представлена ​​в PhpStorm (v4 или 5), и встроенное покрытие не работало должным образом (из-за определенной ошибки с расположением файлов). Единственное отличие от того, что я делал раньше, - это пути к файлам. LazyOne 11 лет назад 0
Я только что попробовал: если я запускаю phpunit вне IDE (из командной строки) и создаю там файл cover.xml, я могу затем присоединить его к IDE, используя третий шаг без проблем. ** Возможно ** это работает для вас (если у вас есть правильные пути) .. но цвета покрытия по умолчанию слишком блеклые / светлые, и вы просто не можете их видеть? (по умолчанию в редакторе выделена только небольшая область) LazyOne 11 лет назад 1
Bam. Работает. Понятия не имею, что пошло не так с первой попытки, отлично, большое спасибо! nico gawenda 11 лет назад 0
1
Michael Butler

Update: At least as of PHPStorm 2016.1 or possibly before (e.g. Version 9 or 10) you can automatically get PHPUnit code coverage by using PHPUnit over SSH Server. You have to first add a Remote PHP Interpreter using the steps in the official guide. Then, simply choose this as your default Project PHP Interpreter. When you run a test you can click "Run 'MyTest' with Coverage" and it automatically copies and loads the coverage file over SSH.

Source: https://confluence.jetbrains.com/display/PhpStorm/Running+PHPUnit+tests+over+SSH+on+a+remote+server+with+PhpStorm