2012-06-25 30 views
2

一年多前,我通過Microsoft Web Platform Installer安裝了PHP。安裝的PHP版本是5.3.6。然後我通過PEAR安裝PPHUnit(版本3.5.14)。我用它通過Netbeans運行我的單元測試,它運行良好,直到我將PHPUnit升級到最新版本(3.6.11)。從那時起,我無法再運行我的單元測試。在Netbeans中運行單元測試時,無法重新聲明phpunit_autoload

當我在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

出於某種原因,它認爲它需要重新加載Autoload.php。您可以嘗試將203行上的require更改爲require_once,以查看它是否有幫助。如果我冒險猜測,那是因爲你自己的代碼自動加載器想要加載類似命名的東西,並且它與PHPUnit自身中的自動加載器衝突。也許命名空間類,或確保自動加載器在PHPUnit之前加載,可能會有所斬獲。我會認爲它是一個錯誤。

+0

嗨Wrikken,謝謝你的回答。我試過了,但這對我沒有幫助。我還需要補充一點,我自己並沒有寫一個Autoload.php。 – Tornado

+0

在我的單元測試文件中有以下內容: require_once「../classes/myClass.class.php」; 需要「PHPUnit/Autoload.php」; 將其更改爲以下內容使其適用於某些(但不是所有類) require_once「../classes/PropertySetField.class.php」; require_once「PHPUnit/Autoload.php」; require_once「PHPUnit/Autoload.php」; – Tornado

+0

刪除最後一個'require':它已經包含在'C:\ Program Files文件(x86)\ PHP \ v5.3 \ phpunit'中,因此刪除'require'PHPUnit/Autoload.php應該可以工作。 :總是使用'_once'作爲class/function includes&require) – Wrikken

相關問題