Может ли PHPUnit временно сбросить системные пути перед запуском?

я использую PHPUnit-паучок наряду с PHPUnit для запуска браузерных / функциональных тестов на PhantomJS, установленных через jonnyw / PHP-phantomjs, который в свою очередь устанавливает phantomjs двоичный в <project>/bin, Поскольку эта папка не находится в системном пути, мне нужно запустить тесты следующим образом:

PATH=$PATH:`pwd`/bin ./phpunit test/browser/tests

Это работает нормально, но я ожидаю, что мне понадобится сжать ее в команду raw, когда я настрою ее на размещенном CI без префикса среды:

./phpunit test/browser/tests

Я пробовал --bootstrap Команда запустить system() команда для сброса системного пути, но безрезультатно, и я не вижу ничего в руководстве, которое описывает, как сделать это через phpunit.xml, К сожалению, Spiderling жестко связывает команду Phantom, и ожидается, что она будет видна в системном пути.

Я также пытался сделать это setUp() Тестовый метод, но это слишком поздно — Spiderling уже попытался и не смог запустить PhantomJS на случайном порту.

(Команда ./phpunit это просто символическая ссылка на vendor/phpunit/phpunit/phpunit, который является PHPUnit установленным через Composer.)

0

Решение

В дополнение к этому вопросу выясняется, что:

  • Хостинговые инструменты CI предлагают способы достижения этого вне PHPUnit
  • Трэвис, который я использую, предлагает phantomjs в любом случае в стандартном пути

Таким образом, хотя оказывается, что мне это не нужно, кажется, есть два способа достичь этого. Поскольку мой подход требует выполнения обратных кавычек, мне интересно, env подход может не сработать. Однако, для полноты, вот оба:

  • env подход является записью в .файл travis.yml.
  • Вы также можете попробовать before_script ключ со значением таким образом:

    before_script:
    - export PATH=`pwd`/bin:$PATH
    

    Поскольку рабочий каталог должен быть установлен в корне проекта, pwd плюс подкаталог должен добавить новый путь к системному пути.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]