PHPUnit 自动加载器错误:找不到类'Yii'



我正在尝试启动PHPUnit测试。

我正在使用composer加载PHPUnit 4.5、Yii 1.1.14和我们构建的一些自定义Yii包。在这些自定义包中,我们使用Yii类自动加载一些设置别名的文件。

在运行应用程序时,我们手动包含基本Yii文件,然后运行composer生成的自动加载。

问题是,当我们运行PHPUnit时。。composer自动加载首先运行。即使在使用include:指定引导文件时

bin/phpunit --bootstrap carcass/phpunit.bootstrap.php  

导致以下异常:

Fatal error: Class 'Yii' not found 

事实上,自动加载似乎甚至在--选项解析之前就已经运行:

bin/phpunit --help 

导致相同的错误。删除自动加载允许PHPunit运行。

有办法解决这个问题吗?

我尝试在我们的主composer.json中为Yii基本文件放置一个自动加载,但子包的自动加载首先运行。。同样的错误。

我还尝试在每个子包中放置Yii基本文件的自动加载。。但当composer使用CCD_ 2时,我们会得到重新声明错误。我也不太喜欢这个选项,因为它严格地定义了Yii定义从哪里来的子包,而这些子包实际上并不需要知道。

因为自动加载classmap部分在所有文件部分(包括来自子包的文件部分)之前首先运行。

将yii和YiiBase文件放在我们项目的主composer.json的classmap中解决了这个问题:

"autoload": {  
    "classmap": [  
        "composer_packages/yiisoft/yii/framework/YiiBase.php",  
        "composer_packages/yiisoft/yii/framework/yii.php" 
    ], 
    "files": [ 
        ... 
    ] 
}

最新更新