Reputation: 49533
I use PHPUnit for unit tests, but when a fatal error is triggered, the script dies and I have no correct PHPUnit output.
I'd like that the PHPUnit output stays correctly formated, because it is read by a plugin for Eclipse. Actually the fatal error stops PHPUnit and in Eclipse the plugin can't interpret anything (because the PHPUnit script had an error, instead of handling it).
Thanks
Upvotes: 23
Views: 9629
Reputation: 31078
You need to use PHPUnit's process isolation features - start each test suite in a new process.
phpunit --process-isolation ...
This is the only way to make sure fatal errors don't break your phpunit output.
Process isolation multiplies your test run time, because for each single test, a new PHP instance is started, the bootstrap is executed etc.
To amend this situation, you may choose to run full test cases in a separate process (@runTestsInSeparateProcesses
), or only single ones that are known to fatal out sometimes (@runInSeparateProcess
).
Upvotes: 30
Reputation: 17555
set_error_handler() won't help you there. You can catch fatal errors using register_shutdown_function()
Upvotes: 2