2011-11-15 155 views
9

我安裝的PHPUnit和我的測試類時,類在同一個目錄PHP類解決的問題是這樣的:運行PHPUnit的測試用例

require_once 'PHPUnit/Framework/TestCase.php'; 

class Test extends PHPUnit_Framework_TestCase {...} 

當我在Eclipse執行PHP腳本,我得到以下錯誤:

Fatal error: Class 'PHPUnit_Framework_Assert' not found in .../PEAR/PHPUnit/Framework/TestCase.php on line 99

所以我創建了一個普通的PHP類加載測試:

  • a.php只會和B.php在同一目錄

a.php只會:

class AA {} 

B.php:

class BB extends AA {} 
new BB(); 

當執行PHP腳本B.php我得到了同樣的錯誤:

Fatal error: Class 'AA' not found in .../B.php on line 2

有必須是PHP能夠解決這些類的一個選項,否則PHPUnit無法工作。有任何想法嗎?

謝謝。

+2

你怎麼執行測試? PHPUnit是一個命令行工具。當你這樣使用它時,它會安裝它自己的自動加載器,所以通常你不需要任何東西,只要PEAR在你的include_path中。當你從Eclipse運行它時,確保你「作爲PHPUnit測試運行」,而不僅僅是一個腳本。 – Gordon

+0

是的,謝謝。在我發佈我的問題後,我想了一會兒。 :) – user498380

+0

要我發佈它作爲答案,以便您可以接受它作爲解決方案? – Gordon

回答

6

你不應該裝載/需要

require_once 'PHPUnit/Framework/TestCase.php'; 
在測試中

可言。普通的phpunit跑步者應該能夠弄清楚。

通常IDES 應該關心PHPUnit的設置正確(或正確地調用它),但如果不奏效,需要

require_once 'PHPUnit/Autoload.php'; 

這應該做的伎倆則因爲這是什麼需要做PHPUnit正在運行

+0

謝謝。 PTI有一個PHPUnit擴展,但由於某些原因,這個擴展並不適用於我的Eclipse。但是,我將只使用命令行phpunit。 – user498380

+0

也許這與PHPUnit 3.6有關。從我見過的PTI通常工作得很好:) ---反正:如果你的問題解決了,請將其中一個答案標記爲「接受」(對其中一個答案選中複選標記文本),讓人們知道你的問題已經解決並且他們可以看看另一個問題。 – edorian

+0

我認爲其中一個原因是,PHPUnit手冊中的第一個練習之一就是指導您這樣做。然後你遇到這個錯誤,並最終在堆棧溢出頁面(這是我如何找到它BTW)。 –

0

我在與NetBeans集成時遇到了這個問題。對我來說,解決方案是加載一個bootstrap.php文件,該文件將包含所有必需的依賴項,而不改變我的類文件。

糟糕:剛纔意識到您正在使用Eclipse。它應該非常相似。問題可能在於,您的include腳本與Eclipse的工作目錄(或者應用程序正常運行的其他目錄)相關。但是,這是一個在黑暗中刺傷而不自己太熟悉Eclipse ...