10 ответов:
The документация PHPUnit
говоритиспользуется, чтобы сказать, чтобы включить/требовать PHPUnit/Framework.php, следующим образом:require_once ('PHPUnit/Framework/TestCase.php');обновление
начиная с PHPUnit 3.5, есть встроенный класс автозапуска, который будет обрабатывать это для вас:
require_once 'PHPUnit/Autoload.php';спасибо Феникс за указание на это!
для тех, кто прибывает сюда после обновления phpunit до версия 6 или выше выпущенный на 2017-02-03 (например, с composer), вы можете получить эту ошибку, потому что код phpunit теперь находится в пространстве имен (проверьте список изменений).
вам нужно будет рефакторинг вещи, как
\PHPUnit_Framework_TestCaseдо\PHPUnit\Framework\TestCase
на более высокая версия из phpunit таких как 6.4 Вы должны использовать пространство имен PHPUnit\Framework\TestCase
использовать TestCase вместо PHPUnit_Framework_TestCase
// use the following namespace use PHPUnit\Framework\TestCase; // extend using TestCase instead PHPUnit_Framework_TestCase class SampleTest extends TestCase { }
вы можете получить эту ошибку, потому что вы пространство имен файла. Если это так, вам нужно будет указать, что PHPUnit_Framework_TestCase находится в глобальном пространстве имен, предваряя его обратной косой чертой:
namespace AcmeInc\MyApplication\Tests class StackTest extends \PHPUnit_Framework_TestCase {}представил грубый пиар начать разговор для исправления документация.
я запускал тесты PHPUnit на PHP5,а затем мне нужно было поддерживать PHP7. Вот что я сделал:
В композитора.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\TestCase if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase')) class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase');другими словами, это будет работать для тестов, написанных первоначально для PHPUnit 4 или 5, но затем необходимо работать и на PHPUnit 6.
вы можете просто установить PHPUnit для запуска команд (https://github.com/sebastianbergmann/phpunit/#php-archive-phar):
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar mv phpunit.phar /usr/local/bin/phpunitвыполнить один тест
а затем запустить PHPunit test:
phpunit test.phpсодержание тестового файла следующее:
<?php class StackTest extends PHPUnit_Framework_TestCase { protected function setUp() { } public function testSave() { } }запуск тестов
конфигурация комплекта тестов: demosuite.XML.
demo- это каталог, содержащий все тесты. Тестовые файлы должны быть названный как*_test.php(suffix).<testsuites> <testsuite name="DemoTestSuite"> <directory suffix="test.php">demo</directory> </testsuite> </testsuites>тестовый набор работает со следующими командами:
phpunit -c demosuite.xml --testsuite DemoTestSuite
предположения:
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 который будет работать вокруг проблемы. Она также включает в себя изменения в Трэвис.yml, которого у вас может не быть в вашей настройке; если это так, то вам понадобится для редактирования .файл diff, чтобы игнорировать патч Трэвиса.
- загрузите патч" Unified Diff " из нижней части https://core.trac.wordpress.org/changeset/40547
отредактируйте файл патча, чтобы удалить часть Travis патча, если вам это не нужно. Удалить из верхней части файла чуть выше этой строки:
Index: /branches/4.7/tests/phpunit/includes/bootstrap.phpсохраните diff в каталоге над вашим/ includes / каталогом - в моем случае это был Сам каталог Wordpress
используйте средство исправления Unix для исправления файлов. Вам также нужно будет удалить первые несколько косых черт, чтобы перейти от абсолютной к относительной структуре каталогов. Как вы можете видеть из пункта 3 выше, перед каталогом include есть пять косых черт, от которых флаг a-p5 избавится для вас.
$ cd [WORDPRESS DIRECTORY] $ patch -p5 < changeset_40547.diffпосле того, как я сделал это, мои тесты снова прошли правильно.
Я использую ZF2 и работаю для меня при замене 'PHPUnit_Framework_TestCase' на '\PHPUnit\Framework\TestCase'
Comments