Когда ошибка, которую фреймворк PHPunit не ожидает, происходит, тестирование останавливается, а PHP выдает ошибку, но PHPunit не записывает, что это была ошибка. Как я могу убедиться, что PHPunit записывает его как ошибку.
Отказ от ответственности, я новичок в PHPUnit и пытаюсь выяснить, что происходит, когда происходит ошибка ».
Из документов PHPUnit :
Когда тестируемый код содержит ошибки синтаксиса PHP, тестовый бегун TextUI может выйти без информации об ошибках печати. Стандартный загрузчик тестовых наборов может дополнительно проверить исходный файл тестового набора для ошибок синтаксиса PHP, но не исходные файлы, включенные в исходный файл тестового набора.
И вариант:
--syntax-check Try to check source files for syntax errors.
То, о чем говорит OP, это синтаксис или ошибка PHP, которая убьет PHPUnit. PHP Неустранимая ошибка убивает PHP-интерпретатор (или заставляет его остановиться хотя бы), что означает, что PHPUnit не может продолжаться.
Если вы действительно хотели избежать этого случая, вы могли бы добавить некоторые из следующих битов в сценарий. Этот скрипт предполагает, что скрипт находится в каталоге с вашими тестами (./) и что ваше дерево кода начинается с ./ (аналогичная настройка для обычной установки ZendFramework 1). Не потрудись использовать код с этим скриптом, он будет корректным только для последнего запуска unittest:
#!/bin/bash for i in $(find ../ -name "*.php"); do msg=`php -l $i` if [ "$?" != "0" ]; then echo $msg; fi done for i in $(find ./ -name "*Test.php"); do echo "Running Test: $i"; phpunit $i done
НТН.
Вам нужно будет зафиксировать ошибку, используя обычный захват ошибок PHP, чтобы избежать сбоя в ОС, что происходит, когда PHP-интерпретатор сталкивается с ошибкой.
Автоматические тесты должны быть проверены и протестированы, прежде чем быть привязаны к основному потоку разработки.
Я беру вывод из PHPUnit (phpunit …> PHPUnit.log), который затем анализирую поиск статуса из PHPUnit (Success with Skipped / Incomplete, OK, FAILURE и т. Д.), И если это не найдено, тогда Я знаю, что PHPUnit не завершился, и произошла ошибка. Результаты ошибки также будут сбрасываться на терминал, так как у меня настроен PHP, чтобы показывать ошибки.
При ошибке я просто отправляю этот файл журнала команде разработчиков или человеку, который в последний раз изменил тестовый файл, для расследования. Логика для электронной почты может стать сложной, если скрипты попытаются решить, к какому первопричину / человеку отправлено письмо. Обычно сценарий отправляет мне электронное письмо, чтобы расследовать, и команда разработчиков находится на электронном письме, если я ухожу или не могу немедленно разобраться.