2015-06-02 2 views
0

Я новичок в php, и мне нужно сделать тестирование для приложения. Я пытаюсь выполнить модульное тестирование, но отображаются сообщения об ошибках. У меня много недель назад, и я не могу это исправить, пожалуйста, помогите мне!Неустранимая ошибка: Class 'CDbTestCase' не найден

В сообщении говорится: «Неустранимая ошибка: класс« CDbTestCase »не найден.

Я читаю и читаю много руководств по этой проблеме, но это не работает.

Я использую Yii, Eclipse IDE и композитор.

Я думаю, что проблема в bootstrap.php, но я не использую его, потому что я работаю с композитором, это composer.json

{ 
    "require-dev": { 
     "yiisoft/yii": "1.1.*", 
     "phpunit/phpunit": "4.6.*", 
     "phpunit/phpunit-selenium": ">=1.2", 
     "codeception/codeception":"*", 
     "phpunit/dbunit": ">=1.2" 
    }, 

    "autoload": { 
     "psr-0": {"": "vendor/autoload.php"}, 
     "psr-4": {"": "/../framework/test/CDbTestCase.php"} 
    } 
} 
+1

можете ли вы поместить код, где была ошибка? –

+0

просто говорится, что некоторые, где вы пытаетесь создать объект 'CDbTestCase', но не там, где в вашем коде определен класс с этим именем. Благодарю. –

+0

Не видя ошибок, я не могу быть уверен, но, может быть, этот ответ поможет? http://stackoverflow.com/questions/12760644/fatal-error-class-cdbtestcase-not-found-yii-framework – d0ug7a5

ответ

0

Ваш композитор самозарядные совершенно неправильно.

  1. Не включайте композитор автозагрузчик «Vendor/autoload.php» в автозагрузке собственного composer.json. Существует только один автозагрузчик, и он создается с использованием ваших данных автозагрузки, а также любых библиотек.
  2. Автозагрузка PSR-4 также неверна. Вы должны указать каталог, в который классы помещаются в файлы в соответствии с PSR-4. Вы указываете на один файл.
  3. Вы не используете префиксы класса для PSR-0 и PSR-4. Это плохо для производительности, потому что вы заявляете, что ЛЮБОЙ класс может находиться в каталоге. Поэтому Composer также должен искать этот класс в этом каталоге даже для классов, которые, как гарантируется, не будут там. Всегда используйте префикс и делайте это как можно дольше, чтобы разрешить уникальные совпадения: один префикс должен только указывать только на одну структуру каталогов.

Вы должны объяснить, почему в ваших тестах не используется файл начальной загрузки. Минимальный требуемый код начальной загрузки для PHPUnit должен включать автозагрузчик Composer. Кроме того, вы должны добавить вещи, которые требуются в ваших тестах и ​​должны быть выполнены один раз, например инициализация компонентов инфраструктуры - YMMV.

+0

Спасибо, я исправил его, но он все еще не работает :( –

+0

Теперь я должен использовать свое воображение, чтобы угадать, что ваш код - или я могу попросить вас предоставить пример кода, который сводится только для демонстрации проблемы. – Sven

1

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

Используйте загруженный файл начальной загрузки и убедитесь, что вы также включили файл autoload.php композитора. Обычно я добавляю это в свой конфигурационный файл yii (по-моему, по умолчанию yii использует файл конфигурации test.php для настраиваемых параметров тестирования. Вы можете включить autoload.php внутри этого файла)

Где-то наверху вашего yii config file

// Include composer autoload 
require_once 'path/to/composer/vendor/autoload.php'; 
Смежные вопросы