2013-08-04 15 views
28

Sto usando phpunit con framework Laravel 4. Perché quando si verifica un errore PHP durante i test, non vengono visualizzati messaggi di errore (ad esempio: metodo mancante)?Perché phpunit non mostra alcun errore nella console

Come possiamo ottenere phpunit per mostrare tutti gli errori?

enter image description here

+0

È possibile ottenere tutti gli errori di PHPunit. [Questo] [1] o [Questo] [2] ti saranno utili. [1]: http://stackoverflow.com/questions/3569862/phpunit-errors [2]: http://stackoverflow.com/questions/5994729/phpunit-not-showing-a-stack-trace -for-a-php-fatal-error –

risposta

23

Credo che il problema è probabilmente si riferisce ad un PHP sé, non PHPUnit. Attenersi alla seguente procedura:

1. Controllare corretta php.ini. Si noti che alcuni sistemi possono utilizzare diversi php.ini per differenti SAPI PHP:

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

2. Modifica impostazioni di output errore. Impostare impostazioni appropriate per error_reporting, display_errors, display_startup_errors in corrispondenti php.ini:

error_reporting = E_ALL 
display_errors = On 
display_startup_errors = On 

Se non si desidera modificare errore CLI segnalazione comportamento in ambito globale, è possibile utilizzare file di bootstrap PHPUnit per definire tali settnigs.

1. Bootstrap di installazione per PHPUnit. Aprire /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml di file e aggiungere l'attributo bootstrap per tag phpunit:

<phpunit bootstrap="bootstrap.php"> 

2. Creare bootstrap.php nella cartella con 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'); 
40

questo è un problema molto comune, soprattutto quando si esegue test su un server di produzione o quando il tester non è molto consapevole della configurazione di PHP.

Il problema è relativo alle impostazioni php.ini, come indicato da Alexander Yancharuk nella sua risposta e tutte le soluzioni che suggerisce funzionano bene.

Ma c'è un'altra soluzione che può essere utile, come è stato per me, che è quello di definire le impostazioni PHP appropriate nel file di configurazione PHPUnit (XML) per sé, come segue:

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

Usando questo puoi personalizzare non solo la visualizzazione degli errori, ma tantissima configurazione di PHP, in particolare per la tua suite di test, lasciando intatta la tua configurazione di produzione e senza dover scrivere un file di bootstrap solo per questo.

+0

Ho provato questo, ma non funziona per me. Mi chiedo solo se mi manca qualcosa. Sto usando Laravel 5.6 su un Mac con High Sierra. PHP versione PHP 7.1.7 e phpunit 7.0.0. Ho aggiunto le due righe mostrate nell'elemento '' al file 'phpunit.xml' fornito con Laravel, ma senza fortuna. Gli errori non vengono ancora visualizzati. Qualche idea, perché no? – flyingL123

Problemi correlati