Ответ 1
Определите константу в файле PHPUnit bootstrap.php
. Это выполняется перед загрузкой или выполнением любых тестов. Это не должно влиять на разработчиков, запускающих приложение в обычном режиме - просто модульные тесты.
У меня в настоящее время есть проблема, с которой мне приходится работать в устаревшем коде, чтобы наше взаимодействие с PHP-расширением работало правильно (вопрос о тестировании Singleton).
Таким образом, я не хочу выполнять этот код при запуске нашего нормального производственного кода с приложением. Поэтому мне нужно проверить обычный PHP-код, если исполняемый код выполняется как часть теста или нет.
Любые предложения по определению этого? Я думал о определенной переменной, связанной с наличием самих тестовых файлов (мы не отправляем тесты клиентам), но нашим разработчикам необходимо, чтобы Extension работал нормально, а сервер CI должен запускать тесты.
Будет ли рекомендован глобальный набор в файле PHPUnit.xml? Другие мысли?
Определите константу в файле PHPUnit bootstrap.php
. Это выполняется перед загрузкой или выполнением любых тестов. Это не должно влиять на разработчиков, запускающих приложение в обычном режиме - просто модульные тесты.
Альтернативный подход заключается в установить константу в разделе PHP вашего phpunit.xml. *:
<php>
<const name="PHPUNIT_YOURAPPLICATION_TESTSUITE" value="true"/>
</php>
В вашем приложении PHP вы можете использовать следующую проверку:
if (defined('PHPUNIT_YOURAPPLICATION_TESTSUITE') && PHPUNIT_YOURAPPLICATION_TESTSUITE)
{
echo 'TestSuite running!';
}
Вы можете проверить $argv
разные способы.
if(PHP_SAPI == 'cli') {
if(strpos($_SERVER['argv'][0], 'phpunit') !== FALSE) { ... }
// or
if($_SERVER['argv'][0] == '/usr/bin/phpunit') { ... }
}
Я использую файл журнала Laravel для определения того, выполняются ли тесты PHPUnit.