PHPUnit через Composer и PhpStorm

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

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

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

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


person shredding    schedule 10.10.2012    source источник
comment
Вы должны добавить путь к классам PHPUnit в переменную include_path вашего php.ini. Должно работать (извините, сам не проверял, так как не использую Composer). Если это не поможет, то только youtrack.jetbrains.com/issue/WI-13429   -  person LazyOne    schedule 10.10.2012
comment
это функция, которую действительно нужно скоро включить в PHPStorm.   -  person    schedule 26.10.2012


Ответы (6)



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

  1. Go to 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. Go to Defaults -> PHPUnit
  3. Под Test Scope выберите Defined in configuration file
  4. Убедитесь, что текстовое поле Interpreter options пусто.
  5. Перейдите к PHPUnit (выше Defaults) и удалите любую запись под ним (чтобы в следующий раз, когда вы будете тестировать определенный файл и т. д., он настроит новый, но с использованием нового значения по умолчанию).

‹code›Редактировать конфигурации...‹/code›

person Adam Lynch    schedule 21.02.2013
comment
Что это за тема, выглядит потрясающе. - person shredding; 21.02.2013
comment
Действительно, начиная с 126.260 это способ сделать это! Проголосовал. - person aderuwe; 28.02.2013
comment
Я новичок и впервые выполняю настройку композитора, теперь как мне узнать, где взять/сделать phpunit.xml.dist для включения в Default Configuration File настройки. Почему не всегда полный ответ????? - person Sizzling Code; 19.10.2014
comment
для глобальных настроек композитора вы должны использовать ~/.composer/vendor/autoload.php - person venimus; 10.05.2016

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

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

person Seldaek    schedule 10.10.2012

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

person Vasiliy P    schedule 09.03.2014
comment
ЭТО. Я потратил часы, пытаясь понять это, и мой PhpStorm не может загрузить phar сам по себе, поэтому мне пришлось загрузить его вручную. Спасибо. - person Scorchio; 20.11.2014

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

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

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

person edorian    schedule 10.10.2012

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

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

phpstorm-run-configuration-dialog

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

person b01    schedule 05.01.2014
comment
Таким образом, мне больше не нужно было указывать скрипт автозагрузки композитора. - person b01; 05.01.2014