Набор тестов 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');