phpUnit 失败,出现奇怪的错误

5
PHP Fatal error:  Default value for parameters with a class type hint can only be NULL in /usr/share/php/PHPUnit/Framework/Test.php on line 66
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:46
PHP   3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:130
PHP   4. PHPUnit_Runner_BaseTestRunner->getTest() /usr/share/php/PHPUnit/TextUI/Command.php:150
PHP   5. PHPUnit_Runner_BaseTestRunner->loadSuiteClass() /usr/share/php/PHPUnit/Runner/BaseTestRunner.php:104
PHP   6. PHPUnit_Runner_StandardTestSuiteLoader->load() /usr/share/php/PHPUnit/Runner/BaseTestRunner.php:168
PHP   7. PHPUnit_Util_Fileloader::checkAndLoad() /usr/share/php/PHPUnit/Runner/StandardTestSuiteLoader.php:78
PHP   8. PHPUnit_Util_Fileloader::load() /usr/share/php/PHPUnit/Util/Fileloader.php:79
PHP   9. include_once() /usr/share/php/PHPUnit/Util/Fileloader.php:95
PHP  10. phpunit_autoload() /usr/share/php/PHPUnit/Autoload.php:0
PHP  11. require() /usr/share/php/PHPUnit/Autoload.php:203
PHP  12. phpunit_autoload() /usr/share/php/PHPUnit/Autoload.php:0

需要翻译的内容如下:

The line in question has:

public function run(PHPUnit_Framework_TestResult $result = NULL)

当我删除= NULL时,代码可以运行,但在另一行也有一个= NULL,错误信息显示必须是NULL,而它本身就是NULL,这让人很困惑。

我没有修改PhpUnit,按照这里的方法安装的。

我真的不明白为什么会出现这种情况……有些东西告诉我PHP出了问题,给了我错误的信息。


你最近更新了PHP吗?你运行的是哪个版本和操作系统?我同意看起来像是PHP出了问题。那些代码行没问题。 - David Harkness
在您删除默认值后,如果在随后的NULL上失败,那么会出现什么错误消息? - Spudley
尝试更新PHPUnit,因为3.6.3对于3.6.x分支来说已经相当老了。 - David Harkness
1
PHP将NULLnull视为不同的值,这表明您的PHP安装存在严重问题。 - David Harkness
1
哦,该死,我找到问题了,而且是我自己的一个愚蠢错误。我有一个常量文件,用于定义ORM库中的NULL。它在自己的命名空间中定义,所以不应该干扰全局常量,但我猜常量在命名空间中有点棘手。 - Naatan
显示剩余10条评论
1个回答

1

找到答案了,引用自评论区:

哦,该死,我找到问题了,这是我的一个愚蠢错误。我有一个常量文件,为了在ORM库中使用NULL而定义。它在自己的命名空间中定义,所以不应该干扰全局常量,但我想常量在命名空间中有点棘手..

所以今天我学到了,如果你想在命名空间中定义常量,仅仅在文件顶部添加命名空间是不够的,你必须像这样定义常量。

define('NAMESPACE\CONSTANT',        'value');
// or
define(__NAMESPACE__ . '\CONSTANT', 'value'); // to use the current namespace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接