为什么phpunit在控制台中没有显示任何错误

时间:2013-08-04 21:40:13

标签: php tdd phpunit laravel laravel-4

我正在使用phpunit和Laravel 4框架。为什么在测试期间出现PHP错误时,没有显示错误消息(例如:缺少方法)?

我们怎样才能让phpunit显示所有错误?

enter image description here

3 个答案:

答案 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_reportingdisplay_errorsdisplay_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']);