在 Netbeans 中运行单元测试时无法重新声明phpunit_autoload


Cannot redeclare phpunit_autoload when running unit tests in Netbeans

一年多前,我通过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 之前加载自动加载器,可能会解决问题。不过,我会认为这是一个错误。