当发生PHPunit框架预期不会发生的错误时,测试停止,并且PHP抛出错误,但PHPunit不会记录它是错误的。如何确保PHPunit将其记录为错误。
答案 0 :(得分:5)
免责声明,我是PHPUnit的新手,并试图找出整个'发生错误时会发生什么'。
当测试代码包含PHP语法错误时,TextUI测试运行器可能会退出而不会打印错误信息。标准测试套件加载程序可以选择检查测试套件源文件中的PHP语法错误,但不检查测试套件源文件中包含的源文件。
选项:
--syntax-check Try to check source files for syntax errors.
答案 1 :(得分:0)
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
HTH。
答案 2 :(得分:0)
您需要使用正常的PHP错误捕获捕获错误,以避免崩溃到操作系统,这会在PHP解释器遇到错误时发生。
在提交到主开发流之前,应检查并测试自动化测试。
我从PHPUnit(phpunit ...> PHPUnit.log)中捕获输出,然后我解析从PHPUnit中寻找状态(成功与跳过/不完整,确定,失败等等),如果这是找不到,然后我知道PHPUnit没有完成,并且发生了错误。由于我已将PHP配置为显示错误,因此错误的结果也将被转储到终端。
如果出现错误,我只需将此日志文件邮寄给开发团队或上次更改测试文件的人员进行调查。如果脚本试图确定发送邮件的根本原因/人,则电子邮件的逻辑可能会变得复杂。通常情况下,该脚本会通过电子邮件自行调查,如果我不在或无法立即进行调查,开发团队会在电子邮件中显示CC。