致命错误:找不到类'CDbTestCase'

时间:2015-06-02 15:52:35

标签: php yii phpunit composer-php

我是php的新手,我必须为应用做测试。我正在尝试进行单元测试,但会显示错误消息。我有很多周前,我无法解决它,请帮助我!

消息说:致命错误:找不到类'CDbTestCase'。

我阅读并遵循了许多有关此问题的教程,但它不起作用。

我正在使用Yii,Eclipse IDE和Composer。

我认为问题出在bootstrap.php中,但我不使用它,因为我正在使用composer,这就是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"}
    }
}

2 个答案:

答案 0 :(得分:1)

加载yii框架需要bootstrap文件。 CDbTestCase是yii框架的一部分,因此如果您的测试依赖于yii的单元测试相关类,那么如果不包含yii将会出现此错误。

使用随附的引导程序文件,并确保您还包含composer的autoload.php文件。我通常将此添加到我的yii配置文件中(我相信默认情况下,yii使用test.php配置文件进行自定义测试相关设置。您可以在此文件中包含autoload.php)

位于yii配置文件顶部的某处

// Include composer autoload
require_once 'path/to/composer/vendor/autoload.php';

答案 1 :(得分:0)

您的Composer自动加载完全错误。

  1. 请勿在自己的composer.json自动加载中包含composer自动加载器“vendor / autoload.php”。只有一个自动加载器,它是使用自动加载数据以及任何库创建的。
  2. PSR-4自动加载也是错误的。您必须根据PSR-4声明将类放入文件的目录。你指向一个文件。
  3. 您不使用PSR-0和PSR-4的类前缀。这对性能不利,因为您声明任何类都可以在目录中。因此,Composer也必须在此目录中搜索该类,即使对于保证不在那里的类也是如此。始终使用前缀,并尽可能长地允许唯一匹配:一个前缀应该只指向一个目录结构。
  4. 您应该解释为什么在测试中不使用引导程序文件。 PHPUnit所需的最小引导代码是包含Composer自动加载器。此外,您应该添加测试中所需的内容,并且必须执行一次,例如框架组件-YMMV的初始化。