2

一年多以前,我通过 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,但并没有改善这种情况。Pear 本身也升级到了最新版本(1.9.4)。

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

4

1 回答 1

1

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

于 2012-06-25T20:13:02.900 回答