Мне удалось эффектно нарисовать себя в углу с помощью пользовательского «обработчика фатальных ошибок», который в некоторых редких условиях приводил к выводу ничего . Эти условия, в соответствии с законом Мерфи, материализовались, когда я забыл, что обработчик на месте.
Поскольку это не было «проблемой PHPunit», ни один из других ответов не помог [хотя проблема @ Дэвида была в сущности одинаковой], даже если симптомы были одинаковыми - phpunit завершается без вывода, нет ошибки, без журнала и без подсказки.
В итоге мне пришлось прибегнуть к пошаговой трассировке всего набора тестов, добавив это в код начальной загрузки:
register_shutdown_function(function() {
foreach ($GLOBALS['lastStack'] as $i => $frame) {
print "{$i}. {$frame['file']} +{$frame['line']} in function {$frame['function']}\n";
}
});
register_tick_function(function() {
$GLOBALS['lastStack'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 8);
});
declare(ticks=1);
Если кому-то удастся сделать хуже, чем это, и каким-то образом заблокировать стандартный вывод, эта модификация должна работать:
register_shutdown_function(function() {
$fp = fopen("/tmp/path-to-debugfile.txt", "w");
foreach ($GLOBALS['lastStack'] as $i => $frame) {
fwrite($fp, "{$i}. {$frame['file']} +{$frame['line']} in function {$frame['function']}\n");
}
fclose($fp);
});