PHP Class решает проблему для классов в одном каталоге при выполнении тестовых случаев PHPUnit - PullRequest
10 голосов
/ 15 ноября 2011

Я установил PHPUnit, и мой тестовый класс выглядит следующим образом:

require_once 'PHPUnit/Framework/TestCase.php';

class Test extends PHPUnit_Framework_TestCase {...}

Когда я выполняю скрипт PHP в Eclipse, я получаю следующую ошибку:

Неустранимая ошибка:Класс 'PHPUnit_Framework_Assert' не найден в ... / PEAR / PHPUnit / Framework / TestCase.php в строке 99

Поэтому я создал общий тест загрузки классов PHP:

  • A.php и B.php в одном каталоге

A.php:

class AA {}

B.php:

class BB extends AA {}
new BB();

При выполнении PHPскрипт B.php Я получаю ту же ошибку:

Неустранимая ошибка: класс 'AA' не найден в ... / B.php в строке 2

Там должно бытьбыть возможностью для PHP разрешать эти классы, иначе PHPUnit не сможет работать.Есть идеи?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 15 ноября 2011

Вы не должны загружаться / требовать

require_once 'PHPUnit/Framework/TestCase.php';

в ваших тестах вообще. Обычный бегун phpunit должен это понять.

Обычно IDE должен заботиться о правильной настройке phpunit (или его правильном вызове), но если это не сработает, требуется

require_once 'PHPUnit/Autoload.php';

Это должно сделать то, что нужно, чтобы PHPUnit работал

0 голосов
/ 12 июля 2017

В случае использования PHPUnit 6.x класс PHPUnit_Framework_Assert был удален. Вместо этого вы должны использовать пространства имен или понизить до ~4.5.

Таким образом, замените PHPUnit_Framework_Assert на \PHPUnit\Framework\Assert, а не используйте оператор вроде:

use PHPUnit\Framework\Assert;

И использовать Assert напрямую, например Assert::assertNotEmpty(...);.

Источник: Класс 'PHPUnit_Framework_Assert' не найден (Behat \ Testwork \ Call \ Exception \ FatalThrowableError # 2585

0 голосов
/ 15 ноября 2011

Я столкнулся с этой проблемой при интеграции с NetBeans.Решением для меня было загрузить файл bootstrap.php, который включал бы все необходимые зависимости, оставляя мои файлы классов нетронутыми.Это должно быть довольно похоже.Вероятно, проблема в том, что ваш сценарий включения относится к рабочему каталогу Eclipse (или к другому каталогу, отличному от того, где обычно работает ваше приложение).Но это удар в темноте, когда я сам не слишком знаком с Eclipse ...

...