一年多前,我通过Microsoft Web Platform Installer安装了PHP。安装的 PHP 版本是 5.3.6。然后我通过PEAR(版本3.5.14)安装了PPHUnit。我用它来通过 Netbeans 运行我的单元测试,在我将 PHPUnit 升级到最新版本 (3.6.11) 之前,它运行良好。从那时起,我就不能再运行我的单元测试了。
当我查看 Netbeans 选项中的 PHPUnit 配置时,没有报告任何错误,并且 phpunit.bat 得到了很好的识别。这是phpunit的内容.bat:
set PHPBIN="C:'Program Files (x86)'PHP'v5.3'php.exe"
%PHPBIN% "C:'Program Files (x86)'PHP'v5.3'phpunit" %*
但是,当我尝试运行单元测试时,在 Netbeans 的"输出"窗口中出现以下错误:
Fatal error: Cannot redeclare phpunit_autoload() (previously declared in C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Autoload.php:51) in C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Autoload.php on line 205
---
Call Stack:
0.0003 323984 1. {main}() C:'Program Files (x86)'PHP'v5.3'phpunit:0
0.0055 731680 2. PHPUnit_TextUI_Command::main() C:'Program Files (x86)'PHP'v5.3'phpunit:46
0.0055 732096 3. PHPUnit_TextUI_Command->run() C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'TextUI'Command.php:130
0.0420 1218480 4. PHPUnit_Runner_BaseTestRunner->getTest() C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'TextUI'Command.php:150
0.0877 1596168 5. ReflectionMethod->invoke() C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Runner'BaseTestRunner.php:124
0.0877 1596184 6. NetBeansSuite::suite() C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Runner'BaseTestRunner.php:124
0.0893 1600944 7. PHPUnit_Framework_TestSuite->addTestFile() D:'Program Files'NetBeans 7.1'php'phpunit'NetBeansSuite.php:85
0.0893 1601408 8. PHPUnit_Util_Fileloader::checkAndLoad() C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Framework'TestSuite.php:358
0.0898 1601504 9. PHPUnit_Util_Fileloader::load() C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Util'Fileloader.php:79
0.1028 1633840 10. include_once('D:'Inetpub'wwwroot'DTS'unit'UploadException.test.php') C:'Program Files (x86)'PHP'v5.3'PEAR'PHPUnit'Util'Fileloader.php:95
转储 $_GET
自从出现此问题以来,我已经卸载并重新安装了几次PHPUnit,但它并没有改善这种情况。梨本身也升级到最新版本(1.9.4)。
有人知道如何摆脱这些错误吗?
出于某种原因,它认为需要重新加载Autoload.php
。您可以尝试将第 203 行的require
更改为require_once
以查看是否有帮助。如果我冒昧地猜测,那是因为您自己的代码自动加载器想要加载名称相似的内容,并且它与 PHPUnit 本身中的自动加载器冲突。也许命名类的间距,或者确保在 PHPUnit 之前加载自动加载器,可能会解决问题。不过,我会认为这是一个错误。