PHPUnit CodeIgniter生成夹具PHP致命错误:未找到类'PHPUnit_Framework_TestCase'

时间:2014-04-25 19:03:06

标签: php codeigniter unit-testing phpunit

安装了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生成灯具和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文件中的类,或者至少它们的顺序不正确?有趣的是,它运行测试很好但不是生成固定装置。

另外我还使用composun安装了phpunit,所以我也安装了/ www / test / vendor / bin / phpunit。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我的代码中遇到了同样的问题,尽管我没有使用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的类。我不确定为什么当它无法在项目命名空间中找到它时,它没有尝试从'base'加载它(这很可能是由于我自己的自动加载器有故障)。

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