На travis CI начали фейлиться билды на php 7 (php 7.0, php 7.1). На остальных версиях включая hhvm всё ок. На php 7 возникает ошибка:
PHP Fatal error: Class 'PHPUnit_Framework_TestCase' not found
|
На travis CI начали фейлиться билды на php 7 (php 7.0, php 7.1). На остальных версиях включая hhvm всё ок. На php 7 возникает ошибка: PHP Fatal error: Class 'PHPUnit_Framework_TestCase' not found
|
|||
|
|
Решением проблемы является замена:
на
\PHPUnit\Framework\TestCase - связано с тем, что классы в phpunit версии 6 используют неймспейсы. Соответственно наш код тоже должен использовать неймспейсы. Имейте в виду, что это поможет для php 7 билдов, но поломает тесты в php 5.4 и php 5.5 :) https://github.com/symfony/symfony/issues/21534 Тут есть полезные комменты по обсуждению стыковочного "моста" между различными версиями phpunit, в том числе от автора phpunit Sebastian Bergmann. Там предлагается создание полифила для symfony, но аналогичным образом можно сделать для любого проекта. Sebastian пояснил, что он не делал ничего для обратной совместимости в 6-ой версии phpunit т.к. не видел в этом необходимости, но каждый по необходимости может сделать совместимость в своём проекте. Если используете phpunit 6 (т.е. CaseTest extends \PHPUnit\Framework\TestCase), то чтобы заставить работать ваши тесты с более ранними версиями phpunit можно прописать alias на \PHPUnit\Framework\TestCase до запуска тестов. Т.е. лучше всего прописать в tests/bootstrap.php: // backward compatibility for php 5.5 and low (with phpunit < v.6) if (!class_exists('\PHPUnit\Framework\TestCase') && class_exists('\PHPUnit_Framework_TestCase')) { class_alias('\PHPUnit_Framework_TestCase', '\PHPUnit\Framework\TestCase'); } Если хотите писать код в стиле phpunit < 6, т.е. наследовать свои классы от PHPUnit_Framework_TestCase, то нужно сделать наоборот: if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase')) { class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase'); }
|
|||
|