我正在使用phpunit和Laravel 4框架。为什么在测试期间出现PHP错误时,没有显示错误消息(例如:缺少方法)?
我们怎样才能让phpunit显示所有错误?
答案 0 :(得分:46)
这是一个非常常见的问题,尤其是当您在生产服务器上运行测试或者测试人员不太了解PHP配置时。
问题与php.ini
设置有关,正如Alexander Yancharuk在他的回答中指出的那样,他建议的所有解决方案都可以正常工作。
但还有另一个可能有用的解决方案,就像我一样,它是在PHPUnit配置文件(XML)本身中设置适当的PHP设置,如下所示:
<phpunit>
<suites>
...
</suites>
<php>
<ini name="display_errors" value="On" />
<ini name="display_startup_errors" value="On" />
</php>
</phpunit>
使用此功能,您不仅可以个性化错误显示,还可以个性化许多PHP配置,特别是针对您的测试套件,使您的生产配置保持不变,而无需为此编写引导文件。
答案 1 :(得分:30)
我认为问题可能是指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
<强> 2。编辑错误输出设置。在相应的php.ini
中为error_reporting,display_errors,display_startup_errors设置适当的设置:
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
如果您不想更改全局范围内的CLI错误报告行为,可以使用PHPUnit引导文件来定义这些设置。
<强> 1。为PHPUnit设置bootstrap 。打开/Applications/MAMP/htdocs/testtingDecoded/phpunit.xml
文件并将bootstrap属性添加到phpunit标记:
<phpunit bootstrap="bootstrap.php">
<强> 2。在包含phpunit.xml
的文件夹中创建bootstrap.php :
<?php
ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
答案 2 :(得分:0)
您可以使用以下类似方式专门将错误打印到控制台。
$response = $this->get('https://stackoverflow.com/questions/18047844-NotFound/');
$response->dumpSession($keys = ['error']);