Проблема PHPUnit – нет сообщений об ошибках

Я пытался решить эту проблему в течение некоторого времени.

У меня есть простой тестовый пример PHPUnit с двумя тестами. Когда я запускаю его, я получаю этот вывод:

PHPUnit 3.5.14 by Sebastian Bergmann. . 

Итак, первое утверждение выполняется, проходит. Второе утверждение, однако, вызывает некоторую ошибку PHP (исключение или что-то еще), а PHPUnit просто умирает без какой-либо информации о том, что могло пойти не так.

Вот мой phpunit.xml:

 <?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" colors="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="true" syntaxCheck="false" bootstrap="bootstrap.php.cache" > <testsuites> <testsuite name="Portal Test Suite"> <directory>../src/OneSolution/Portal/*Bundle/Tests</directory> </testsuite> </testsuites> </phpunit> во <?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" colors="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="true" syntaxCheck="false" bootstrap="bootstrap.php.cache" > <testsuites> <testsuite name="Portal Test Suite"> <directory>../src/OneSolution/Portal/*Bundle/Tests</directory> </testsuite> </testsuites> </phpunit> во <?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" colors="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="true" syntaxCheck="false" bootstrap="bootstrap.php.cache" > <testsuites> <testsuite name="Portal Test Suite"> <directory>../src/OneSolution/Portal/*Bundle/Tests</directory> </testsuite> </testsuites> </phpunit> 

Установка syntaxCheck в true не дает дополнительной информации об ошибке. Однако он дважды печатает (перед запуском каких-либо тестов), что The filename, directory name, or volume label syntax is incorrect.

???

Итак, есть ли у кого-нибудь идеи, что я могу сделать, чтобы PHPUnit сообщал эти сообщения об ошибках (опция --verbose тоже не помогла)?

EDIT: Я узнал, что привело к провалу теста. Было ошибочное имя метода (я полагаю, слишком много полагаюсь на кодовую помощь). Однако это не решает основной проблемы. Любые предупреждения, ошибки или исключение не сообщаются PHPUnit .

Хорошо, поэтому, если у кого-то есть проблемы с получением или неполным выходом из командной строки PHPUnit, дважды проверьте свои директивы конфигурации php.ini :

  • error_reporting – должен быть установлен на E_ALL | E_STRICT E_ALL | E_STRICT для вашей среды разработки
  • display_errors – должно быть установлено значение On

У меня была та же проблема, даже при включенной отчетности об ошибках.

Я попытался включить в свои тестовые и setUp методы setUp чтобы узнать, где он висит, но они так и не появились. Проблема оказалась выходной буферизацией PHP. Когда я добавил следующий метод в свой тест:

 protected function debug($text) { echo "\nDEBUG: $text\n"; flush(); ob_flush(); } 

и использовал $this->debug() вместо простого echo , я смог увидеть мои отладочные утверждения. Двоичный поиск по коду быстро привел к источнику проблемы (в моем случае недействительный инструмент базы данных).