Запустите свои тесты через командную строку phpunit. Загружает необходимые классы.
Halfstop
Вы также можете использовать ответ из следующего ответа stackoverflow.com/questions/42811164/…, чтобы ваш код был совместим с PHPUnit 6, а также с более ранними версиями.
Робсон
Ответы:
73
В документации PHPUnit говорится, что раньше говорилось, что нужно включать / требовать PHPUnit / Framework.php, как показано ниже:
require_once ('PHPUnit/Framework/TestCase.php');
ОБНОВИТЬ
Начиная с PHPUnit 3.5, есть встроенный класс автозагрузчика, который сделает это за вас:
Для тех, кто прибыл сюда после обновления phpunit до версии 6 или выше, выпущенной 03.02.2017 (например, с помощью composer), вы можете получить эту ошибку, потому что код phpunit теперь находится в пространстве имен (проверьте журнал изменений ).
Вам нужно будет реорганизовать вещи , как \PHPUnit_Framework_TestCaseк\PHPUnit\Framework\TestCase
Спасибо, у меня возникла эта проблема из-за того, что Travis CI использовал самую последнюю версию PHPUnit в своих сборках PHP 7. Мое решение заключалось в том, чтобы вручную загрузить старый phar и использовать его вместо этого.
Благодарю вас, добрый сэр. Я действительно приезжаю сюда после обновления до версии 6.
h4ckNinja
Меня очень раздражало, что мои тесты внезапно перестали работать. Я сделал обновление композитора, и он обновил мой PHPunit до 6.1. Спасибо.
Джед Линч
38
Для более поздней версии phpunit, такой как 6.4,
вы должны использовать пространство имен PHPUnit \ Framework \ TestCase
используйте TestCase вместо PHPUnit_Framework_TestCase
// use the following namespaceusePHPUnit\Framework\TestCase;// extend using TestCase instead PHPUnit_Framework_TestCaseclassSampleTestextendsTestCase{}
Отлично, это сработало для меня, так как я следовал старому руководству
вы только что скопировали ответ Шади
Адам
@ Адам, кто такой Шади?
Jijesh Cherrai
Я такого не знаю. У меня
такая
13
Вы можете получить эту ошибку, потому что вы разместили файл в пространстве имен. В таком случае вам нужно будет указать, что PHPUnit_Framework_TestCase находится в глобальном пространстве имен, поставив перед ним обратную косую черту:
Да, если вы сделали это: class YourNiceTest extends PHPUnit_Framework_TestCaseпросто добавьте \ перед расширенным классом, как в class YourNiceTest extends \PHPUnit_Framework_TestCase- Это сработало для меня, используя Symfony 2.8и включая phpunitв файл композитора, загруженный как локальную зависимость с"phpunit/phpunit": "^4.8"
Xavi Montero
12
Я запускал тесты PHPUnit на PHP5, а потом мне также понадобилась поддержка PHP7. Вот что я сделал:
В composer.json:
"phpunit/phpunit":"~4.8|~5.7"
В моем файле начальной загрузки PHPUnit (в моем случае /tests/bootstrap.php):
// PHPUnit 6 introduced a breaking change that// removed PHPUnit_Framework_TestCase as a base class,// and replaced it with \PHPUnit\Framework\TestCaseif(!class_exists('\PHPUnit_Framework_TestCase')&& class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase','\PHPUnit_Framework_TestCase');
Другими словами, это будет работать для тестов, написанных изначально для PHPUnit 4 или 5, но затем необходимо было работать и на PHPUnit 6.
это решение важно, если вы не хотите касаться кода Civi \ Test, но нуждаетесь в совместимости с последним модульным тестом php на основе пространства имен
Это больше не работает, потому что последняя версия PHPUnit больше не поддерживает старые имена классов, такие как PHPUnit_Framework_TestCase. Вы действительно должны использовать... extends PHPUnit\Framework\TestCase
Микко Ранталайнен 01
Просто говорю, что я должен был сначала, mv phpunit /usr/local/bin/phpunitа потом sudo chmod +x /usr/local/bin/phpunit. Установка файла в качестве исполняемого перед перемещением никогда не работала на Vagrant Ubuntu. Понятия не имею, почему ... Но если кто-то борется с этим, я надеюсь, что это поможет.
Джордж Милонас,
4
Предположение:
Phpunit (3.7) доступен в консольной среде.
Действие:
Введите в консоль следующую команду:
SHELL> phpunit "{{PATH TO THE FILE}}"
Комментарии:
Вам не нужно ничего включать в новые версии PHPUnit, если только вы не хотите запускать в консоли. Например, запуск тестов в браузере.
Если у вас есть Centos или другой дистрибутив Linux, вам необходимо установить пакет phpunit, я сделал это с помощью yum install phpunit, и он сработал. Возможно, вам придется добавить репозиторий, но я думаю, что он должен работать гладко с репозиториями по умолчанию (у меня CentOS 7)
Вполне возможно, что вы запускаете основные тесты WordPress и недавно обновили свой PhpUnit до версии 6. Если это так, то недавнее изменение пространств имен в PhpUnit нарушит ваш код.
К счастью, на https://core.trac.wordpress.org/changeset/40547 есть патч для основных тестов, который поможет обойти проблему. Он также включает изменения в travis.yml, которых может не быть в вашей настройке; в этом случае вам необходимо отредактировать файл .diff, чтобы игнорировать патч Travis.
Сохраните разницу в каталоге над вашим каталогом / includes / - в моем случае это был каталог Wordpress.
Используйте инструмент исправлений Unix для исправления файлов. Вам также необходимо убрать первые несколько косых черт, чтобы перейти от абсолютной к относительной структуре каталогов. Как видно из пункта 3 выше, перед каталогом include есть пять косых черт, от которых можно избавиться с помощью флага -p5.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
ВНИМАНИЕ: Команда php bin/console generate:doctrine:crudтакже создает TestControllerв, src/Testsпоэтому она может выдать ошибку при попытке запустить сервер, если у вас ее нет UnitTests. Удалите файл, исправьте!
Ответы:
В документации PHPUnit
говорится, чтораньше говорилось, что нужно включать / требовать PHPUnit / Framework.php, как показано ниже:ОБНОВИТЬ
Начиная с PHPUnit 3.5, есть встроенный класс автозагрузчика, который сделает это за вас:
Спасибо Phoenix за указание на это!
источник
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
и тогоPHPUnit/Framework/TestCase.php
, и другого, и моя папка вроде какPHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Для тех, кто прибыл сюда после обновления phpunit до версии 6 или выше, выпущенной 03.02.2017 (например, с помощью composer), вы можете получить эту ошибку, потому что код phpunit теперь находится в пространстве имен (проверьте журнал изменений ).
Вам нужно будет реорганизовать вещи , как
\PHPUnit_Framework_TestCase
к\PHPUnit\Framework\TestCase
источник
Для более поздней версии phpunit, такой как 6.4, вы должны использовать пространство имен PHPUnit \ Framework \ TestCase
используйте TestCase вместо PHPUnit_Framework_TestCase
источник
Вы можете получить эту ошибку, потому что вы разместили файл в пространстве имен. В таком случае вам нужно будет указать, что PHPUnit_Framework_TestCase находится в глобальном пространстве имен, поставив перед ним обратную косую черту:
Я отправил грубый пиар, чтобы начать разговор об исправлении документации .
источник
class YourNiceTest extends PHPUnit_Framework_TestCase
просто добавьте \ перед расширенным классом, как вclass YourNiceTest extends \PHPUnit_Framework_TestCase
- Это сработало для меня, используяSymfony 2.8
и включаяphpunit
в файл композитора, загруженный как локальную зависимость с"phpunit/phpunit": "^4.8"
Я запускал тесты PHPUnit на PHP5, а потом мне также понадобилась поддержка PHP7. Вот что я сделал:
В composer.json:
В моем файле начальной загрузки PHPUnit (в моем случае
/tests/bootstrap.php
):Другими словами, это будет работать для тестов, написанных изначально для PHPUnit 4 или 5, но затем необходимо было работать и на PHPUnit 6.
источник
Вы можете просто установить PHPUnit для запуска команд ( https://github.com/sebastianbergmann/phpunit/#php-archive-phar ):
Выполнить одиночный тест
А затем запустите тест PHPunit:
Содержание тестового файла следующее:
Запустить набор тестов
Конфигурация набора тестов: demosuite.xml.
demo
это каталог, содержащий все тесты. Файлы тестов должны называться*_test.php
(suffix
).Набор тестов запускается со следующими командами:
источник
PHPUnit_Framework_TestCase
. Вы действительно должны использовать... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
а потомsudo chmod +x /usr/local/bin/phpunit
. Установка файла в качестве исполняемого перед перемещением никогда не работала на Vagrant Ubuntu. Понятия не имею, почему ... Но если кто-то борется с этим, я надеюсь, что это поможет.Предположение:
Действие:
Введите в консоль следующую команду:
Комментарии:
Вам не нужно ничего включать в новые версии PHPUnit, если только вы не хотите запускать в консоли. Например, запуск тестов в браузере.
источник
Я использую ZF2 и работаю на меня, когда заменил PHPUnit_Framework_TestCase на \ PHPUnit \ Framework \ TestCase
источник
Если у вас есть Centos или другой дистрибутив Linux, вам необходимо установить пакет phpunit, я сделал это с помощью yum install phpunit, и он сработал. Возможно, вам придется добавить репозиторий, но я думаю, что он должен работать гладко с репозиториями по умолчанию (у меня CentOS 7)
источник
Вполне возможно, что вы запускаете основные тесты WordPress и недавно обновили свой PhpUnit до версии 6. Если это так, то недавнее изменение пространств имен в PhpUnit нарушит ваш код.
К счастью, на https://core.trac.wordpress.org/changeset/40547 есть патч для основных тестов, который поможет обойти проблему. Он также включает изменения в travis.yml, которых может не быть в вашей настройке; в этом случае вам необходимо отредактировать файл .diff, чтобы игнорировать патч Travis.
Отредактируйте файл патча, чтобы удалить часть патча Travis, если она вам не нужна. Удалите сверху файла чуть выше этой строки:
Сохраните разницу в каталоге над вашим каталогом / includes / - в моем случае это был каталог Wordpress.
Используйте инструмент исправлений Unix для исправления файлов. Вам также необходимо убрать первые несколько косых черт, чтобы перейти от абсолютной к относительной структуре каталогов. Как видно из пункта 3 выше, перед каталогом include есть пять косых черт, от которых можно избавиться с помощью флага -p5.
После этого мои тесты снова прошли правильно.
источник
ВНИМАНИЕ: Команда
php bin/console generate:doctrine:crud
также создаетTestController
в,src/Tests
поэтому она может выдать ошибку при попытке запустить сервер, если у вас ее нетUnitTests
. Удалите файл, исправьте!источник
Для меня это было потому, что я бежал
вместо того
когда у меня уже был настроенный
phpunit.xml
файл в рабочем каталоге.источник
Я использую php 5.6 в окне 10 с версией zend 1.12 для добавления
перед
работал. Нам нужно добавить этот оператор в файл ControllerTestCase.php.
источник