【问题标题】:PHPUnit CodeIgniter Generate Fixtures PHP Fatal error: Class 'PHPUnit_Framework_TestCase' not foundPHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”
【发布时间】: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 的路径。

标签: php codeigniter unit-testing 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 的类。我不确定为什么当它无法在项目命名空间中找到它时,它没有尝试从“基础”加载它(这很可能是由于我自己的自动加载器出现故障)。

我知道这是一个老问题,但我将把它留在这里,以防它可能对某个地方的人有所帮助。

【讨论】:

    猜你喜欢
    • 2019-09-22
    • 2014-03-13
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多