web-dev-qa-db-ja.com

Laravel 5:PHPUnitおよび利用可能なコードカバレッジドライバーなし

PHPUnitを使用してコードカバレッジレポートを作成したいと思います。私はウェブ上で見つけた多くのインストール設定を試しました。しかし、何もうまくいかないようです。

最新バージョンのLaravel 5(> 5.2)およびPHPUnit v。5.0.10を使用しています。さらに、PHP 7を実行しているMac OS X 10.9.5でMAMPを使用します。

Laravelディストリビューションに統合されているPHPUnitを実行すると、次のエラーが表示されます。

$ vendor/bin/phpunit -v
PHPUnit 5.0.10 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.0.0
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml
Error:         No code coverage driver is available`

composerファイルは次のようになります。

"require-dev": {
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "5.0.*",
    "phpunit/php-code-coverage": "^3",
    "symfony/css-selector": "2.8.*|3.0.*",
    "symfony/dom-crawler": "2.8.*|3.0.*"
},

また、次のコマンドも試しました。

/Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v

これにより、コードカバレッジドライバーが適切にセットアップされたように見えますが、例外が発生します。

$ /Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v
PHPUnit 5.0.10 by Sebastian Bergmann and contributors.

Runtime:       PHPDBG 7.0.0
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml

[PHP Fatal error:  Uncaught ErrorException: include(/Applications/MAMP/htdocs/myProject/app/Exceptions/Handler.php): failed to open stream: Too many open files in /Applications/MAMP/htdocs/myProject/vendor/composer/ClassLoader.php:412
Stack trace:
...

Phpunit.xmlは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
     backupStaticAttributes="false"
     bootstrap="bootstrap/autoload.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <logging>
      <log type="coverage-html" target="./tests/codeCoverage" charset="UTF-8"/>
    </logging>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>

Laravelフレームワークに付属するPHPUnitをコードカバレッジと一緒に使用することはできますか?どのように設定して使用する必要がありますか?

ご協力ありがとうございます。

54
LaDude

Xdebug拡張機能が欠落しているようです。 homebrewを使用している場合は、次のようにインストールできます。

brew install php70-xdebug

その後、php.iniファイルを編集して拡張機能を有効にすることを忘れないでください。

php -i | grep xdebug

Xdebugが有効になっていることを確認したら、コードカバレッジを実行できるはずです。

72
Nenad

立ち往生している他の人の更新。

pecl install xdebug

11
Robert Pounder

PHP 7.1の更新

xdebugはコードの検索とカバレッジに不可欠なので、テスト環境でxdebugをインストールするか有効にする必要があります。本番環境のxdebugは推奨できません。有効にするとパフォーマンスに影響します

brew install php71-xdebug

5
Suresh Velusamy

Vagrant box内でphpunitを実行する場合、ローカルにxdebugをインストールする必要はなく、Homesteadにはxdebug installが自動的にインストールされます。 Homestead xdebug.iniファイルのみをリンクする必要があります

ここに私のために働いたステップがあります:

cd ~/Homestead/REPLACE THIS WITH YOUR Homestead FOLDER IN LOCAL //
vagrant ssh

Sudo ln -s /etc/php/7.2/fpm/conf.d/20-xdebug.ini /etc/php/7.2/cli/conf.d/

上記のコマンドで、実行中の7.3または7.1の場合、PHPバージョンに基づいて置き換えます

3
Purvesh

Windowsユーザーの場合:

1)ダウンロード xdebug

2)ファイルの名前を_php_xdebug.dll_に変更し、PHPインストールのextフォルダーにファイルをコピーします(例:C :\ Program Files(x86)\ php\ext

3)php.iniファイルを開きます。私にとっては、C:\ Program Files(x86)\ php\php.iniで入手できます。

4)ファイルの下部に以下のコードを貼り付けます。

zend_extension = php_xdebug.dll
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_Host = localhost
xdebug.remote_autostart = 1
xdebug.remote_port = 9000
xdebug.show_local_vars = 1
3
Mazino S Ukah

他の開発者が答えたように、PHP Xdebugをインストールする必要がありますが、デフォルトでHomesteadを使用している開発者に新しい推奨事項を追加します(ただし、オフになっています)。

Homesteadの以下のコマンドで使用する場合

#for on :
xon

#for off:
xoff

次に確認してください php -v 詳細ボックスにXdebugが表示されます

2
Mhmd