一年多以前,我通过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)。
有人知道如何摆脱这些错误吗?
答案 0 :(得分:1)
出于某种原因,它认为需要重新加载Autoload.php
。您可以尝试将第203行的require
更改为require_once
以查看有帮助的内容。如果我冒险猜测,那是因为您自己的代码自动加载器想要加载类似命名的东西,并且它与PHPUnit本身的自动加载器冲突。也许命名这些类,或者确保在PHPUnit之前加载自动加载器,可能会有所帮助。我会认为这是一个错误。