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

问题描述 投票:38回答:3

我在使用phpunit和Laravel 4框架。为什么在测试过程中出现PHP错误时, 不显示任何错误信息 (例如: 缺少方法)?

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

enter image description here

php tdd phpunit laravel laravel-4
3个回答
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

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

error_reporting = E_ALL
display_errors = On
display_startup_errors = On

如果你不想在全局范围内改变CLI错误报告行为,你可以使用PHPUnit bootstrap文件来定义这些设置。

1. 为PHPUnit设置引导文件. 打开 /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml 文件,并在phpunit标签中添加bootstrap属性。

<phpunit bootstrap="bootstrap.php">

2. 创建bootstrap.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');

48
投票

这是一个很常见的问题,特别是当你在生产服务器上运行测试时,或者当测试人员不是很了解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配置,特别是针对你的测试套件,而不影响你的生产配置,也不用专门为此写一个引导文件。


0
投票

你可以使用类似下面的东西来专门打印错误到控制台。

$response = $this->get('https://stackoverflow.com/questions/18047844-NotFound/');
$response->dumpSession($keys = ['error']);
© www.soinside.com 2019 - 2024. All rights reserved.