Почему, фатальная ошибка: класс 'PHPUnit_Framework_TestCase' не найден в ...? - PullRequest
109 голосов
/ 20 мая 2011

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

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

Ответы [ 13 ]

205 голосов
/ 02 марта 2017

Для тех, кто прибывает сюда после обновления phpunit до версии 6 или выше , выпущенной 2017-02-03 (например, с composer), вы можете получить эту ошибку, потому что код phpunit теперь находится в пространстве имен (отметьте * изменений 1004 *).

Вам понадобится рефакторинг таких вещей, как \PHPUnit_Framework_TestCase в \PHPUnit\Framework\TestCase

69 голосов
/ 20 мая 2011

В документации PHPUnit говорится , которая используется для указания / включения PHPUnit / Framework.php следующим образом:

require_once ('PHPUnit/Framework/TestCase.php');

ОБНОВЛЕНИЕ

Начиная с PHPUnit 3.5, есть встроенный класс автозагрузчика, который будет обрабатывать это для вас:

require_once 'PHPUnit/Autoload.php';

Спасибо Phoenix за указание на это!

28 голосов
/ 20 ноября 2017

Для более высокой версии phpunit, такой как 6.4 Вы должны использовать пространство имен PHPUnit \ Framework \ TestCase

use TestCase вместо PHPUnit_Framework_TestCase

// use the following namespace
use PHPUnit\Framework\TestCase;

// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {

}
13 голосов
/ 18 декабря 2014

Вы можете получить эту ошибку, потому что вы указали пространство имен файла. В этом случае вам нужно будет указать, что PHPUnit_Framework_TestCase находится в глобальном пространстве имен, поставив перед ним обратную косую черту:

namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}

Я отправил сырой PR , чтобы начать разговор для исправления документации .

10 голосов
/ 30 июля 2017

Я запускал тесты 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\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.

5 голосов
/ 18 октября 2013

Вы можете просто установить 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:

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
4 голосов
/ 22 марта 2013

Предположение:

Phpunit (3.7) доступно в консоли.

Действие:

Введите в консоли следующую команду:

SHELL> phpunit "{{PATH TO THE FILE}}"

Комментарии:

Вам не нужно ничего включать вновые версии PHPUnit, если вы не хотите запускаться в консоли.Например, запуск тестов в браузере.

0 голосов
/ 10 июня 2019




Короткий и сладкий;это работает для меня:

PHP ping функция

function ping($host){
    $start=microtime(true);
    $fp=@fsockopen($host, 80, $errno, $errstr, 10);
    return (!$fp?'(Unknown)': round((microtime(true)-$start)*1000));
}

Использование:

ping('google.com');




0 голосов
/ 11 февраля 2019

Для меня это было потому, что я запустил

$ phpunit .

вместо

$ phpunit

, когда у меня уже был настроенный файл phpunit.xml в рабочем каталоге.

0 голосов
/ 16 января 2019

ВНИМАНИЕ: Команда php bin/console generate:doctrine:crud также создает TestController в src/Tests, поэтому она может выдать ошибку при попытке запустить сервер, если у вас нет UnitTests.Удалить файл исправить это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...