从Zend Studio 8运行phpUnit测试套件时出现奇怪的错误

时间:2011-03-31 11:03:45

标签: php phpunit pear zend-studio

Zend Studio 8具有phpUnit集成和专用视图,这很棒,所以我想使用它......但是:

当我在命令行上运行我的phpunit.xml时,测试执行得很好,当我尝试在Zend Studio中运行phpunit.xml作为单元测试时,我得到以下致命错误:

  

致命错误:未捕获的异常   带有消息的'PHPUnit_Framework_Error'   '分配新的返回值   引用在C:\ Program中已弃用   档   (86)\ Zend的\ ZendServer对其进行访问\ BIN \ PEAR \ PEAR \ config.php中:650

堆栈追踪:

  

#0 C:\ Program Files   (86)\ Zend的\ ZendServer对其进行访问\ BIN \ PEAR \ PEAR \ RunTest.php(22):   ZendPHPUnitErrorHandler->手柄(8192,   '分配r ...','C:\ Program   文件...',650,数组)
   #1 C:\ Program   档   (86)\ Zend的\ ZendServer对其进行访问\ BIN \ PEAR \ PEAR \ RunTest.php(22):   require_once()
   #2 C:\ Program Files   (86)\ Zend的\ ZendServer对其进行访问\ BIN \ PEAR \ PHPUnit的\扩展\ PhptTestCase.php(49):   require_once('C:\ Program File ...')
   #3   C:\ Program Files(x86)\ Zend \ Zend   工作室 -   8.0.0 \插件\ com.zend.php.phpunit_8.0.0.v20101001-0100 \资源\ ZendPHPUnit.php(103):   require_once('C:\ Program File ...')
   #4   {main}抛出C:\ Program Files   (x86)的\ Zend的\ ZendServer对其进行访问\ BIN \ PEAR \ PEAR \ config.php文件   在线650

我真的不知道这意味着什么......为什么PEAR配置中的一些弃用的代码会让我的测试无法运行?

[编辑] 一些其他信息

我的同事既没有安装PEAR也没有安装phpunit,可以从Zend Studio 8运行单元测试,但他无法从CLI运行。因此,似乎Zend Studio不仅与phpUnit集成,而且还捆绑了它的一个版本。我想要最新的版本,这就是我安装PEAR然后通过PEAR安装phpUnit的原因。因此,Zend Studio的phpUnit库已经过时了,我不得不用Zend论坛用户的版本替换Zend Studio插件文件夹中的文件'ZendPHPUnit.php'。这导致正确包含phpUnit类和当前问题。 [/编辑]

1 个答案:

答案 0 :(得分:3)

PEAR \ Config.php中的第650行

$this->_registry['default'] = &new PEAR_Registry(
    $this->configuration['default']['php_dir']
);

这将引发E_DEPRECATED消息,具体取决于您是否已启用error_reporting以包含该级别。 PHPUnitZendPHPUnit的错误处理程序会将这些错误处理程序转换为PHPUnit_Framework_Exceptions

因为PHP会在编译时引发E_DEPRECATED,所以抑制这些错误的唯一方法是在php.ini中。我的假设是,从CLI运行的PHPUnit使用的是与Zend Studio不同的php.ini,而在php.ini中,错误级别不足以引发E_DEPRECATED

如果您能提供可重复的示例,我们或许可以更好地理解它。无论如何,请尝试将您的PEAR安装更新到最新版本。