PHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”
Posted
技术标签:
【中文标题】PHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”【英文标题】:PHPUnit CodeIgniter Generate Fixtures PHP Fatal error: Class 'PHPUnit_Framework_TestCase' not found 【发布时间】:2014-06-11 15:15:37 【问题描述】:所以安装了 phpUnit 和 CodeIgniter:
http://d.hatena.ne.jp/Kenji_s/20120117/1326763908
无法下载 PEAR,因为它已被弃用。所以只好下载phpunit phar文件:
http://phpunit.de/manual/4.0/en/installation.html#installation.phar
所以能够让一些测试正常运行。将我的 phpunit.phar 移动到 /usr/local/bin 并在测试目录上运行:
php /usr/local/bin/phpunit.phar
所有测试都运行正确。但是当我尝试运行 php generate 固定装置和 php generate.php 固定装置时:
PHP Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /www/test/application/third_party/CIUnit/libraries/CIUnitTestCase.php on line 15
Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /www/test/application/third_party/CIUnit/libraries/CIUnitTestCase.php on line 15
似乎它没有在 phar 文件中找到类,或者至少它们的顺序不正确?有趣的是,它可以很好地运行测试,但不能很好地运行生成装置。
此外,我还使用 composer 安装了 phpunit,所以我也安装了 /www/test/vendor/bin/phpunit。
任何帮助将不胜感激。
【问题讨论】:
生成fixutures的程序实际上并没有验证它使用的依赖项是否可用——因为它是用PHP编写的,你会看到关于它的致命错误。在您的情况下,这些依赖项不可用(尽管您的系统上有它们),因此您需要联系该软件产品的供应商并寻找您的支持选项,您可以在其中配置 phpunit 的路径。 【参考方案1】:虽然我没有使用 CodeIgniter,但我的代码也遇到了同样的问题。尝试运行测试将导致错误消息:
找不到类“PHPUnit_Framework_TestCase”
为了解决这个问题,我通过在测试类声明中添加反斜杠来解决这个问题。
// Before
namespace IMAVendor\Super\Duper;
class MyClassTest extends PHPUnit_Framework_TestCase
// After
namespace IMAVendor\Super\Duper;
class MyClassTest extends \PHPUnit_Framework_TestCase
^
Added this backslash here
这似乎与命名空间和 phpunit 中内置的自动加载器有关。我有自己的项目代码自动加载器,它似乎试图从我的代码中加载 phpunit 的类。我不确定为什么当它无法在项目命名空间中找到它时,它没有尝试从“基础”加载它(这很可能是由于我自己的自动加载器出现故障)。
我知道这是一个老问题,但我将把它留在这里,以防它可能对某个地方的人有所帮助。
【讨论】:
以上是关于PHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”的主要内容,如果未能解决你的问题,请参考以下文章