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

Nyx*_*nyx 38 php tdd phpunit laravel laravel-4

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

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

在此输入图像描述

Vic*_*der 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>
Run Code Online (Sandbox Code Playgroud)

使用此功能,您不仅可以个性化错误显示,还可以个性化许多PHP配置,特别是对于您的测试套件,使您的生产配置保持不变,而无需为此编写引导文件.

  • 我试过这个,但它不适合我.只是想知道我是否遗漏了什么.我在运行High Sierra的Mac上使用Laravel 5.6.PHP版本PHP 7.1.7和phpunit 7.0.0.我将你在`<php> </ php>`元素中显示的两行添加到了Laravel附带的`phpunit.xml`文件中,但没有运气.错误仍未显示.知道为什么不呢? (4认同)
  • 我还记得遇到了同样的问题 b4 而没有找到解决方案,浪费了我的时间。我不明白为什么 PHP 单元默认不显示正常错误并覆盖任何设置为显示错误的内容。事实上,PHP 的“事实上”标准测试库并没有改变这一点。在专门用于调试的库中积极隐藏错误是没有意义的。更糟糕的是这个答案不起作用。 (3认同)

Ale*_*ruk 30

我认为问题可能是指PHP本身,而不是PHPUnit.请遵循以下步骤:

1.检查正确php.ini.请注意,某些系统可以php.ini针对不同的PHP SAPI 使用不同的系统:

php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

2.编辑错误输出设置.设置适当的设置的error_reporting,display_errors设置,display_startup_errors相应php.ini:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On
Run Code Online (Sandbox Code Playgroud)

如果您不想在全局范围内更改CLI错误报告行为,则可以使用PHPUnit引导程序文件来定义这些设置.

1.为PHPUnit设置bootstrap.打开/Applications/MAMP/htdocs/testtingDecoded/phpunit.xml文件并将bootstrap属性添加到phpunit标记:

<phpunit bootstrap="bootstrap.php">
Run Code Online (Sandbox Code Playgroud)

2.在文件夹中创建bootstrap.phpphpunit.xml:

<?php
ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
Run Code Online (Sandbox Code Playgroud)