为什么 phpunit 在控制台中不显示任何错误
我在Laravel 4框架中使用phpunit。为什么在测试期间出现PHP错误时,没有显示错误消息(例如:缺少方法)?
我们如何让phpunit显示所有错误?
我在Laravel 4框架中使用phpunit。为什么在测试期间出现PHP错误时,没有显示错误消息(例如:缺少方法)?
我们如何让phpunit显示所有错误?
这是一个非常常见的问题,特别是当您在生产服务器上运行测试或测试人员不太了解PHP配置时。
正如Alexander Yancharuk在他的答案中指出的那样,这个问题与设置有关,他建议的所有解决方案都可以正常工作。php.ini
但是,还有另一种解决方案可能很有用,就像我一样,那就是在PHPUnit配置文件(XML)本身中设置适当的PHP设置,如下所示:
<phpunit>
<suites>
...
</suites>
<php>
<ini name="display_errors" value="On" />
<ini name="display_startup_errors" value="On" />
</php>
</phpunit>
使用此功能,您不仅可以个性化错误显示,还可以个性化许多PHP配置,特别是针对您的测试套件,使您的生产配置保持不变,而不必为此编写引导文件。
我认为问题可能是指PHP本身,而不是PHPUnit。请按照下列步骤操作:
1. 检查正确的 php.ini
。请注意,某些系统可以对不同的 PHP SAPI 使用不同的系统:php.ini
php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
编辑错误输出设置。在相应的中为error_reporting、display_errors display_startup_errors设置适当的设置:php.ini
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
如果不想在全局范围内更改 CLI 错误报告行为,可以使用 PHPUnit 引导程序文件来定义这些 settnig。
1. 为 PHPUnit 设置引导程序。打开文件并将引导属性添加到 phpunit 标记:/Applications/MAMP/htdocs/testtingDecoded/phpunit.xml
<phpunit bootstrap="bootstrap.php">
2. 在文件夹中创建引导.php::phpunit.xml
<?php
ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');