Подтвердить что ты не робот

PHPUnit через Composer и PhpStorm

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

  • Перейдите к FileSettingsPHPPHPUNIT.
  • Выберите Use custom loader, а затем введите autoload.php файл из каталога поставщиков проектов. Этот автозагрузчик будет автоматически загружать все зависимости, управляемые Composer (включая PHPUnit).
  • Укажите конфигурационный файл по умолчанию (обычно это phpunit.xml.dist из вашего проекта app).

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

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

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

  • Перейдите в RunEdit Configurations... или просто щелкните раскрывающееся меню на панели инструментов и выберите Edit Configurations....
  • Перейдите к DefaultsPHPUNIT
  • В разделе Test Scope выберите Defined in configuration file
  • Убедитесь, что текстовое поле Interpreter options пуст
  • Перейдите к PHPUNIT (выше Defaults) и удалите любую запись под ним (так что в следующий раз, когда вы проверите конкретный файл и т.д., он настроит новый, но использует новый по умолчанию).

<code>Edit Configurations...</code>

Ответ 3

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

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

Ответ 4

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

Ответ 5

PHPStorm имеет пользовательский бегун PHPUnit script (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 в одно из мест вашего пути включения. Добавление поставщика может помочь там, но имейте в виду , когда он должен соответствовать аргументу.

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

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

Ответ 6

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

  • Откройте диалоговое окно "Запуск/отладка конфигурации", нажав Выполнить | Изменить конфигурации.
  • Нажмите + на панели инструментов и выберите PHPUnit (для модульных тестов, выполняемых локально).
  • Введите Имя вверху, что вам нравится.
  • Установите Область проверки в каталог, где находится ваш тест.
  • Нажмите ОК
  • Затем запустите новую конфигурацию.

phpstorm-run-configuration-dialog

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