Подтвердить что ты не робот

Как определить, работают ли тесты PHPUnit?

У меня в настоящее время есть проблема, с которой мне приходится работать в устаревшем коде, чтобы наше взаимодействие с PHP-расширением работало правильно (вопрос о тестировании Singleton).

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

Любые предложения по определению этого? Я думал о определенной переменной, связанной с наличием самих тестовых файлов (мы не отправляем тесты клиентам), но нашим разработчикам необходимо, чтобы Extension работал нормально, а сервер CI должен запускать тесты.

Будет ли рекомендован глобальный набор в файле PHPUnit.xml? Другие мысли?

4b9b3361

Ответ 1

Определите константу в файле PHPUnit bootstrap.php. Это выполняется перед загрузкой или выполнением любых тестов. Это не должно влиять на разработчиков, запускающих приложение в обычном режиме - просто модульные тесты.

Ответ 2

Альтернативный подход заключается в установить константу в разделе PHP вашего phpunit.xml. *:

<php>
   <const name="PHPUNIT_YOURAPPLICATION_TESTSUITE" value="true"/>
</php>

В вашем приложении PHP вы можете использовать следующую проверку:

if (defined('PHPUNIT_YOURAPPLICATION_TESTSUITE') && PHPUNIT_YOURAPPLICATION_TESTSUITE)
{ 
    echo 'TestSuite running!';
}

Ответ 3

Вы можете проверить $argv разные способы.

if(PHP_SAPI == 'cli') {

    if(strpos($_SERVER['argv'][0], 'phpunit') !== FALSE) { ... }
    // or
    if($_SERVER['argv'][0] == '/usr/bin/phpunit') { ... }

}

Ответ 4

Я использую файл журнала Laravel для определения того, выполняются ли тесты PHPUnit.