2012-12-25 38 views
4

我已經安裝phpunit在我的ubuntu 11.10有PHP版本5.2.14。PHP_CodeCoverage_Filter :: getInstance()運行phpunit的錯誤

但是當我運行我的測試模塊,它是拋出錯誤,

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Autoload.php on line 64 

我遵循的步驟提及這個堆棧的問題,但仍然沒有運氣。

Call to undefined method PHP_CodeCoverage_Filter::getInstance()

+0

請不要在您的問題中添加隨機代碼格式。這使得它很難閱讀。 – Charles

+0

@Charles - 我已檢查您的修改並將在下一次處理它。謝謝 !! – Rikesh

回答

6

以下步驟解決了我的問題。

sudo apt-get remove phpunit 

sudo pear channel-discover pear.phpunit.de 

sudo pear channel-discover pear.symfony.com 

sudo pear channel-discover components.ez.no 

sudo pear update-channels 

sudo pear upgrade-all 

sudo pear install --alldeps phpunit/PHPUnit 

sudo pear install --force --alldeps phpunit/PHPUnit 
1

一個解決辦法 - 理所當然的,不是一個真正的解決方案 - 是繞過PEAR安裝,並通過Composer install使用本地副本。

創建項目的根文件名爲composer.json

{ 
    "require": { 
     "phpunit/phpunit" : "3.7.*" 
    } 
} 

當然,修改PHPUnit的版本爲「3.6。*」或類似的,如果你有這樣的要求。

在項目根:

# Install composer 
$ curl -s https://getcomposer.org/installer | php 

# Tell composer to install the dependencies identified in composer.json 
$ php composer.phar install 

# Now you can invoke the *local* copy of phpunit 
$ ./vendor/phpunit/phpunit/composer/bin/phpunit --version 

爲了簡單起見,你可以可以創建一個符號鏈接到PHPUnit的可執行文件。假設你想在一個目錄下符號鏈接稱爲tests

$ ln -s ./vendor/phpunit/phpunit/composer/bin/phpunit ./tests/phpunit 

然後,你可以調用如下(從項目的根):

$ cd tests 
$ ./phpunit --version 

更容易,你可以直接Composer來處理符號鏈接給你的。添加到您的composer.json

"config": { 
    "bin-dir": "tests" 
} 

然後,像以前一樣,你可以調用如下(從項目的根):

$ cd tests 
$ ./phpunit --version 

其實,我平時做的是有一個叫做scripts項目級目錄並指出我的作曲家bin-dir那裏。然後我手動在tests中創建一個符號鏈接,指向scripts/phpunit。但是這最後一步可能比任何一種要求更具個人品味。

也許很長的路要走剛剛擊敗PEAR的問題,但我覺得作曲爲基礎的安裝工作非常可靠的我。

+0

感謝您的回答。我現在從上面的堆棧溢出問題ref中安裝了phpunit。但現在我運行phpunit命令時出現'Parse error:syntax error,unexpected T_FUNCTION,expect')'行中的/usr/share/php/File/Iterator/Autoload.php錯誤45' '錯誤。 – Rikesh

+0

類似於PHPUnit等下載組件的語法錯誤聽起來像是不完整的下載。我會刪除並重新安裝。 –

+1

Aaah,我注意到你在PHP 5.2.14上。 PHPUnit 3.7需要PHP> = 5.3.3,而PHPUnit 3.6只需要PHP> = 5.2.7。除非你有需要在PHP 5.2,否則我會建議提高到5.3。 –