web-dev-qa-db-ja.com

phpunitがコンソールにエラーを表示しないのはなぜですか

Laravel 4フレームワークでphpunitを使用しています。テスト中にPHPエラーが発生した場合、エラーメッセージが表示されないのはなぜですか(例:missing方法)?

Phpunitですべてのエラーを表示するにはどうすればよいですか?

enter image description here

37
Nyxynyx

問題はおそらくPHPUnitではなくPHP自体に関係していると思います。次の手順に従ってください:

1。適切な_php.ini_を確認してください。一部のシステムでは、異なるPHP SAPIに対して異なる_php.ini_を使用できることに注意してください。

_php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
_

2。エラー出力設定を編集します。対応する_php.ini_で error_reportingdisplay_errorsdisplay_startup_errors に適切な設定を設定します。

_error_reporting = E_ALL
display_errors = On
display_startup_errors = On
_

グローバルスコープでのCLIエラー報告の動作を変更したくない場合は、PHPUnit bootstrapファイルを使用してこれらの設定を定義できます。

1。 PHPUnitのbootstrapをセットアップします。 _/Applications/MAMP/htdocs/testtingDecoded/phpunit.xml_ファイルを開き、bootstrap属性をphpunitタグに追加します。

_<phpunit bootstrap="bootstrap.php">
_

2。 _phpunit.xml_でフォルダーにbootstrap.phpを作成します:

_<?php
ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
_
30

これは、特に本番サーバーでテストを実行している場合や、テスターがPHP構成をあまり認識していない場合に、非常に一般的な問題です。

この問題は、 Alexander Yancharuk が指摘したように、php.ini設定に関連しており、彼が提案するすべての解決策は問題なく動作します。

しかし、次のように、PHPUnit構成ファイル(XML)自体に適切なPHP設定を設定するという、私にとっては便利な別の解決策があります。

<phpunit>
    <suites>
        ...
    </suites>
    <php>
        <ini name="display_errors" value="On" />
        <ini name="display_startup_errors" value="On" />
    </php>
</phpunit>

これを使用すると、エラー表示だけでなく、特にテストスイート用の多くのPHP構成をパーソナライズでき、本番構成はそのままで、このためだけにbootstrapファイルを作成する必要がありません。

46