Набор тестов PHPUnit включает путь

Использование phpunit, и у меня возникают проблемы с включением путей, а не для самого phpunit, но для моего каталога кода и тестов.

У меня есть следующая структура кода:

Application
  -StringCalculator.php

tests
  -StringCalculatorTest.php

Внутри моего StringCalculatorTest.php у меня есть инструкция require:

require_once('../StringCalculator.php');

Запуск phpunit StringCalculatorTest.php из папок тестов работает отлично.

Однако, когда я тогда представляю файл конфигурации phpunit.xml в корневом каталоге i.e.

Application
  -StringCalculator.php

tests
  -StringCalculatorTest.php

phpunit.xml

включенный путь завинчен. Я должен заменить require_once на

require_once('StringCalculator.php');

Каков правильный способ установки include-путей между приложением и тестовым каталогом?

Ответ 1

Лучшее место для установки вашего пути включения PHP в ваш файл начальной загрузки. Обычно ваш файл phpunit.xml будет содержать атрибут начальной загрузки:

<phpunit backupGlobals="true"
     backupStaticAttributes="false"
     bootstrap="bootstrap.php"
     cacheTokens="true"
     colors="true"
     ... and so on ...
</phpunit>

Затем в вашем загрузочном файле вы можете указать включенные пути, включить важные файлы и т.д.

set_include_path(get_include_path() . PATH_SEPARATOR . '../my/sources');

Конфигурационный файл находится в Приложение C документов PHPunit.

EDIT: Обновлена ​​ссылка

Ответ 2

Я знаю, что вопрос уже был ответом
Этот ответ для будущего посетителя

Согласно документации phpunit, вы можете использовать директиву includePath в своем phpunit.xml для вашего пути включения

<php>
  <includePath>/path/to/ur/project</includePath>
</php>

Ответ 3

Во-первых, я не понимаю, как работает require_once('../StringCalculator.php');, он должен быть: require_once('../Application/StringCalculator.php');.

Тогда ответ slashingweapon хорош, и это лучший IMO, однако, если вы не хотите, чтобы у вас возникли проблемы, вы можете указать require_once для запуска из каталога текущего файла:

require_once(__DIR__ . '../Application/StringCalculator.php');