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类和当前问题。 [/编辑]
答案 0 :(得分:3)
PEAR \ Config.php中的第650行
$this->_registry['default'] = &new PEAR_Registry(
$this->configuration['default']['php_dir']
);
这将引发E_DEPRECATED
消息,具体取决于您是否已启用error_reporting以包含该级别。 PHPUnit
和ZendPHPUnit
的错误处理程序会将这些错误处理程序转换为PHPUnit_Framework_Exceptions
。
因为PHP会在编译时引发E_DEPRECATED
,所以抑制这些错误的唯一方法是在php.ini中。我的假设是,从CLI运行的PHPUnit使用的是与Zend Studio不同的php.ini,而在php.ini中,错误级别不足以引发E_DEPRECATED
。
如果您能提供可重复的示例,我们或许可以更好地理解它。无论如何,请尝试将您的PEAR安装更新到最新版本。