Why does phpunit not show any errors in the console Why does phpunit not show any errors in the console php php

Why does phpunit not show any errors in the console


This is a very common issue, especially when you are running tests on a production server or when the tester isn't very aware of the PHP configuration.

The issue is related to php.ini settings, as pointed by Alexander Yancharuk in his answer and all the solutions he suggests work fine.

But there is another solution that may be useful, as it was for me, which is to set the appropriate PHP settings in the PHPUnit configuration file (XML) itself, as follows:

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

Using this you can personalize not only error display, but a lot of PHP configuration, specifically for your test suite, leaving your production configuration untouched and without having to write a bootstrap file only for this.


I think the problem is probably refers to a PHP itself, not PHPUnit. Follow this steps:

1. Check proper php.ini. Note that some systems can use different php.ini for different PHP SAPI:

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

2. Edit error output settings. Set appropriate settings for error_reporting, display_errors, display_startup_errors in corresponding php.ini:

error_reporting = E_ALLdisplay_errors = Ondisplay_startup_errors = On

If you don't want to change CLI error reporting behavior in global scope, you can use PHPUnit bootstrap file for define those settnigs.

1. Setup bootstrap for PHPUnit. Open /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml file and add bootstrap attribute to phpunit tag:

<phpunit bootstrap="bootstrap.php">

2. Create bootstrap.php in folder with phpunit.xml:

<?phpini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);ini_set('display_errors', '1');ini_set('display_startup_errors', '1');


You can use something like below to exclusively print errors to console.

$response = $this->get('https://stackoverflow.com/questions/18047844-NotFound/');$response->dumpSession($keys = ['error']);