Верх страницы
Обложка к записи Ошибка «Constant CONSTANT_NAME Already Defined» в PHPUnit
Время для прочтения: 0 мин. 11 сек.

Ошибка «Constant CONSTANT_NAME Already Defined» в PHPUnit

Если вы используете PHPUnit для запуска множества тестов, каждый из которых определяет константы, то вы можете столкнуться с ошибкой «Constant CONSTANT_NAME Already Defined» при попытке запустить их вместе.

Это происходит потому, что PHPUnit по умолчанию запускает все тесты в одном и том же процессе PHP, поэтому после запуска первого теста (и определения в нем константы) PHP будет жаловаться, что вы уже определили константу.

Для решения этой проблемы вам нужно указать PHPUnit не сохранять глобальное состояние между тестами и запускать каждый тест в отдельном процессе. Делается это очень просто:

use PHPUnit\Framework\TestCase;

class RecurringReportTest extends TestCase {

    protected $preserveGlobalState          = false;
    protected $runTestInSeparateProcess = true;

    protected function setUp() { }
    protected function tearDown() { }

    // Тут ваши тесты.
}

Это добавит немного накладных расходов, но, скорее всего, может оказаться единственным способом определить константы в ваших тестах.

Источник: Error Message: ‘Constant Already Defined’ When using PHPUnit

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы