当发生PHPunit框架预期不会发生的错误时,测试将停止,并抛出该错误,但PHPunit不会记录这是一个错误。如何确保PHPunit将其记录为错误。
发布于 2010-08-28 02:06:15
免责声明,我是PHPUnit的新手,我也在试图弄清楚“当错误发生时会发生什么”的整个问题。
来自PHPUnit's docs
当测试代码包含PHP语法错误时,TextUI测试运行器可能会退出,而不打印错误信息。标准测试套件加载器可以选择性地检查测试套件源文件中的PHP语法错误,但不检查测试套件源文件中包含的源文件。
还有一个选项:
--syntax-check Try to check source files for syntax errors.发布于 2012-11-02 02:07:09
OP谈论的是语法,否则PHP错误会杀死PHPUnit。致命错误杀死了PHP解释器(或者至少导致它停止),这意味着PHPUnit无法继续。
如果您真的想避免这种情况,可以在脚本中添加以下代码。此脚本假设脚本位于包含测试(./)的目录中,并且代码树开始于../ (与正常的ZendFramework 1设置类似)。不要在这个脚本中使用代码覆盖率,它只对最后一次运行的单元测试是正确的:
#!/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
doneHTH。
发布于 2012-11-02 04:47:31
您需要使用常规的PHP错误捕获来捕获错误,以避免在PHP解释器遇到错误时导致操作系统崩溃。
自动化测试应该在提交到您的主要开发流程之前进行检查和测试。
我捕获来自PHPUnit (phpunit ... > PHPUnit.log)的输出,然后解析该输出以查找来自PHPUnit的状态(成功,跳过/不完整,OK,失败,等等)如果没有找到,那么我知道PHPUnit没有完成,并且发生了错误。错误的结果也将被转储到终端,因为我已经将PHP配置为显示错误。
如果出现错误,我只需将此日志文件邮寄给开发团队,或最后更改测试文件的人,以进行调查。如果脚本试图确定发送邮件的根本原因/收件人,则电子邮件的逻辑可能会变得复杂。通常,脚本会发送电子邮件给我自己进行调查,开发团队会在电子邮件中抄送我,以防我不在或无法立即进行调查。
https://stackoverflow.com/questions/3569862
复制相似问题