42

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

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

ここに画像の説明を入力

4

3 に答える 3

53

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

Alexander Yancharukphp.iniの回答で指摘されているように、この問題は設定に関連しており、彼が提案するすべての解決策は正常に機能します。

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

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

これを使用すると、エラー表示だけでなく、特にテスト スイート用に多くの PHP 構成をパーソナライズすることができます。これにより、本番環境の構成は変更されず、このためだけにブートストラップ ファイルを作成する必要がなくなります。

于 2015-07-07T21:52:24.763 に答える
32

問題はおそらく PHPUnit ではなく、PHP 自体にあると思います。次の手順に従います。

1. を確認してくださいphp.iniphp.iniシステムによっては、PHP SAPI ごとに異なるものを使用できることに注意してください。

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

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

error_reporting = E_ALL
display_errors = On
display_startup_errors = On

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

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

<phpunit bootstrap="bootstrap.php">

2.次のフォルダーにbootstrap.phpを作成phpunit.xmlします。

<?php
ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
于 2013-12-08T07:50:19.010 に答える