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

时间:2012-06-25 18:41:31

标签: php netbeans phpunit

一年多以前,我通过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)。

有人知道如何摆脱这些错误吗?

1 个答案:

答案 0 :(得分:1)

出于某种原因,它认为需要重新加载Autoload.php。您可以尝试将第203行的require更改为require_once以查看有帮助的内容。如果我冒险猜测,那是因为您自己的代码自动加载器想要加载类似命名的东西,并且它与PHPUnit本身的自动加载器冲突。也许命名这些类,或者确保在PHPUnit之前加载自动加载器,可能会有所帮助。我会认为这是一个错误。