Почему, фатальная ошибка: класс 'PHPUnit Framework TestCase' не найден в ...?



почему я получаю эту ошибку PHP?



Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
1088   10  

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, чтобы игнорировать патч Трэвиса.

  1. загрузите патч" Unified Diff " из нижней части https://core.trac.wordpress.org/changeset/40547
  2. отредактируйте файл патча, чтобы удалить часть Travis патча, если вам это не нужно. Удалить из верхней части файла чуть выше этой строки:

    Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
    
  3. сохраните diff в каталоге над вашим/ includes / каталогом - в моем случае это был Сам каталог Wordpress

  4. используйте средство исправления Unix для исправления файлов. Вам также нужно будет удалить первые несколько косых черт, чтобы перейти от абсолютной к относительной структуре каталогов. Как вы можете видеть из пункта 3 выше, перед каталогом include есть пять косых черт, от которых флаг a-p5 избавится для вас.

    $ cd [WORDPRESS DIRECTORY]
    $ patch -p5 < changeset_40547.diff 
    

после того, как я сделал это, мои тесты снова прошли правильно.

Я использую ZF2 и работаю для меня при замене 'PHPUnit_Framework_TestCase' на '\PHPUnit\Framework\TestCase'

Comments

    Ничего не найдено.