PHPUnit через Composer и PhpStorm

Сейчас я пытаюсь настроить PhpStorm для модульного тестирования. Что бы я ни делал, я получаю это

Process finished with exit code 1 Cannot find PHPUnit in include path ... 

PHPUnit (через командную строку) доступен из любого места; Я установил правильный путь include и добавил PHPUnit во внешние библиотеки. Без шансов.

Возможно ли это вообще или работает только с установками через PEAR? Я проработал все связанные с этим вопросы, я на Mac и PHPUnit работает плавно через CLI.

Solutions Collecting From Web of "PHPUnit через Composer и PhpStorm"

Патрик Висма опубликовал решение на http://youtrack.jetbrains.com/issue/WI-13429 :

Измените конфигурацию для phpunit.xml в PHPStorm и установите параметры интерпретатора следующим образом:

 -d auto_prepend_file=/path/to/vendor/autoload.php 

Ответ @ aderuwe работает, но эта конфигурация не ограничена для каждого проекта, это для всех проектов. Поскольку PHPStorm 6 (фактически даже версия EAP PS-126.260 ), вы можете сделать следующее:

  1. Перейдите в File -> Settings -> PHP -> PHPUNIT .
  2. Выберите Use custom loader а затем введите файл autoload.php из каталога поставщиков ваших проектов. Этот автозагрузчик автоматически загрузит все зависимости, управляемые Composer (включая PHPUnit).
  3. Укажите файл конфигурации по умолчанию (обычно это phpunit.xml.dist из каталога app вашего проекта).

<code> PHP </ code> -> <code> PHPUNIT </ code>

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

Вам необходимо правильно настроить параметры по умолчанию в PHPStorm.

  1. Перейдите в Run -> Edit Configurations... или просто щелкните раскрывающееся меню на панели инструментов и выберите Edit Configurations...
  2. Перейти к Defaults по Defaults -> PHPUnit
  3. В области « Test Scope выберите « Defined in configuration file
  4. Убедитесь, что текстовое поле «Параметры Interpreter options пуст
  5. Перейдите на PHPUnit (над стандартами по Defaults ) и удалите любую запись под ним (чтобы в следующий раз, когда вы тестируете конкретный файл и т. Д., Он настроит новый, но использует новый по умолчанию).

<code> Изменить конфигурации ... </ code>

Я бы предположил, что PhpStorm полагается на поиск PHPUnit в include_path самого php.ini, а не на ваш проект.

Вы можете попробовать добавить каталог поставщика / bin локального проекта в include_path php.ini, но в конечном итоге это похоже на то, что PhpStorm может выиграть от поддержки установки композитора и запуска phpunit самого проекта, если он доступен. На самом деле проблема открыта на их трекере, поэтому я бы порекомендовал вам войти туда и повышать ее: http://youtrack.jetbrains.com/issue/WI-13429

Я хочу добавить, что текущая версия PHPStorm (7.1) хорошо работает только с предыдущей версией PHPUnit (3.7). И он не работает с 4.0 и выше. Если вы скачали phpunit.phar из http://phpunit.de , вы можете указать PHPStorm на него через Settings => PHP => PHPUnit => Путь к phpunit.phar

PHPStorm имеет собственный скрипт runUpen PHPUnit ( ide-phpunit.php ), который он использует внутри себя для работы с различными версиями PHPUnit и для интеграции IDE, и это просто опирается на путь включения и расположение папки PEAR .

Для этого он выполняет:

 public static function checkIncludePath() { //check include path $PHPUnitParentDirectory = self::getPHPUnitParentDirectory(); if (is_null($PHPUnitParentDirectory)) { echo "Cannot find PHPUnit in include path (" . ini_get('include_path') . ")"; exit(IDE_PHPUnit_Loader::FAILURE_EXIT); } } /** * @return null | string */ private static function getPHPUnitParentDirectory() { $pathArray = explode(PATH_SEPARATOR, ini_get('include_path')); foreach ($pathArray as $path) { if (file_exists($path . DIRECTORY_SEPARATOR . 'PHPUnit/')) { return $path; } } return null; } 

Вы можете просто установить его с помощью композитора и добавить его как обычный исполняемый файл (ant / phing / native task), но вы потеряете все блестящие функции, предлагаемые PHPStorm, такие как индикатор выполнения, переход к неудачному тесту и поддержка покрытия кода.

Итак, из кода, который вы можете сказать, вам нужно добавить папку с именем PHPUnit в одно из мест вашего пути include. Добавление поставщика может помочь в этом, но имейте в виду, что при этом нужно соответствовать случаю .

До тех пор, пока PHPStorm не будет поддерживать PHPUnit от композитора или phar, я не думаю, что вы улучшите интеграцию ( http://youtrack.jetbrains.com/issue/WI-13429 ), используя его из груши, но взломать ваш путь включения может работать ,

Парни PHPStorm внесли некоторые обновления на бегун для 3.7 и обычно вполне реагируют на изменения в PHPUnit 🙂

Я обнаружил, что если у меня есть все мои в каталоге «Тест» и набор тестов, определенный в файле конфигурации «Test / phpunit.xml»; Я могу просто настроить «Запустить конфигурацию» следующим образом:

  1. Откройте диалоговое окно «Запуск / отладка конфигурации», нажав « Запустить | Изменить настройки .
  2. Нажмите + на панели инструментов и выберите PHPUnit (для модульных тестов, выполняемых локально).
  3. Заполните Имя в верхней части тем, что вам нравится.
  4. Установите тестовую область в каталог, в котором находится ваш тест.
  5. Нажмите ОК.
  6. Затем запустите новую конфигурацию.

PhpStorm перспективе конфигурация-диалог

Диалоговое окно Phpstorm Run | Конфигурация