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
有问题的行有:
public function run(PHPUnit_Framework_TestResult $result = NULL)
当我删除= NULL
时,它会通过但在另一行上失败,该行也有一个= NULL
,搞砸的事情是错误基本上说它必须是 NULL,它确实如此。
我没有以任何方式修改PhpUnit,我使用这里描述的方法安装了它:
http://www.giocc.com/installing-phpunit-on-ubuntu-11-04-natty-narwhal.html
老实说,我不明白为什么会发生这种情况......有些东西告诉我PHP被窃听了,因为它给了我错误的错误。
找到了答案,引用了我自己在评论部分的话:
哦,该死的,我发现了问题,这对我来说是一个愚蠢的问题。我有一个常量文件,它定义了 NULL 以在 ORM 库中使用的。它是在它自己的命名空间中定义的,所以它不应该干扰全局常量,但我想常量对于命名空间来说有点棘手。
所以 TIL,如果你想在命名空间中定义常量,简单地将命名空间添加到文件顶部是不够的,你必须像这样定义常量
define('NAMESPACE'CONSTANT', 'value');
// or
define(__NAMESPACE__ . ''CONSTANT', 'value'); // to use the current namespace