У меня есть репозиторий Gitlab с интегрированным CI. Тесты проходят на моем компьютере, но не работают в Gitlab, что приводит к ошибке ниже. Это работало до вчерашнего дня, но теперь не работает даже для ранее пройденных ветвей. У кого-нибудь есть идеи?
Fatal error: Declaration of Symfony\Bundle\FrameworkBundle\Test\KernelTestCase::tearDown() must be compatible with PHPUnit\Framework\TestCase::tearDown(): void in /builds/prolocalisapp/backend/vendor/symfony/framework-bundle/Test/KernelTestCase.php on line 136
Да, @RobbieAverill, вероятно, прав. Новейшая основная версия PHPUnit была выпущена несколько дней назад. В этой версии добавлены подсказки типов и возвращаемые типы, которые не поддерживаются Symfony TestCase (который расширяет один из PHPUnit). PHPUnit 7 по-прежнему должен быть безопасным. Вы должны увидеть ту же проблему на своем локальном компьютере при обновлении phpunit/phpunit. Когда вы совершаете composer.lock и выполняете только composer install в своем CI, вы должны быть защищены от этого, но лучше всего убедиться, что phpunit ограничен версией ниже 8.0 в вашем composer.json, как описано выше.






Не используйте ограничение версии звезды смерти для запроса PHPUnit или любой другой зависимости в вашем файле composer.json.
Спасибо всем за ваши ответы. У меня не было ограничений версии звезды смерти. Проблема была в версии phpunit.phar в CI. CI всегда устанавливает последнюю версию из https://phar.phpunit.de/phpunit.phar, а версия phpunit-8.0.1.phar вызывала ошибку. Я заменил URL-адрес в .gitlab-ci.sh на более старую версию https://phar.phpunit.de/phpunit-7.5.2.phar, которая решила проблему.
Как вы это сделали?
Хорошо, нашел: вам нужно изменить этот URL-адрес в файле .gitlab-ci.sh.
Например, постоянная загрузка https://phar.phpunit.de/phpunit.phar вместо https://phar.phpunit.de/phpunit-7.phar имеет тот же эффект, что и использование «ограничения версии звезды смерти» в composer.json для Composer или в phive.xml для Phive.
Похоже, что PHPUnit обновился до более новой версии в CI, чем у вас локально, которая вводит подсказки возвращаемого типа (PHP 7). Вы не ограничиваете его при установке? Например.
composer require --dev phpunit/phpunit *установит любую версию, в отличие отcomposer require --dev phpunit/phpunit ^5.7, который установит только версии 5.x. Версия PHPUnit 7, вероятно, представляет собой подсказку типа возвращаемого значения.