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

2022-08-30 11:29:59

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

我们如何让phpunit显示所有错误?

enter image description here


答案 1

这是一个非常常见的问题,特别是当您在生产服务器上运行测试或测试人员不太了解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配置,特别是针对您的测试套件,使您的生产配置保持不变,而不必为此编写引导文件。


答案 2

我认为问题可能是指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_reportingdisplay_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');

推荐