4

PHPバージョン5.2.14のubuntu 11.10にphpunitをインストールしました。

しかし、テストモジュールを実行するとエラーがスローされ、

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

このスタックの質問に記載されている手順に従いましたが、まだ運がありません。

未定義のメソッド PHP_CodeCoverage_Filter::getInstance() の呼び出し

4

3 に答える 3

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
于 2012-12-26T05:44:38.813 に答える
1

1 つの回避策 (実際には解決策ではありません) は、PEAR のインストールをバイパスし、Composer のインストールを介してローカル コピーを使用することです。

プロジェクト ルートに次のファイルを作成します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 の問題を克服するには長い道のりがありますが、Composer ベースのインストールはかなり確実に機能することがわかりました。

于 2012-12-25T08:30:17.277 に答える
0

私のプラットフォーム Symfony 1.4 には、最新の phpunit バージョンと互換性のある最新バージョンのプラグインがインストールされていませんでした。したがって、 https://github.com/JWT-OSS/sfJwtPhpUnitPlugin/の最新バージョンに更新するとうまくいきました。

于 2013-06-20T06:33:22.777 に答える