web-dev-qa-db-fra.com

Pourquoi phpunit n'affiche aucune erreur dans la console

J'utilise phpunit avec Laravel 4 framework. Pourquoi est-ce que quand il y a une erreur PHP pendant les tests, aucun message d'erreur n'est affiché (par exemple: manquant) méthode)?

Comment pouvons-nous faire en sorte que phpunit affiche toutes les erreurs?

enter image description here

37
Nyxynyx

Je pense que le problème est probablement lié à un PHP lui-même, pas PHPUnit. Suivez ces étapes:

1. Cochez le bon php.ini. Notez que certains systèmes peuvent utiliser différents php.ini Pour différents PHP SAPI:

php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini

2. Modifier les paramètres de sortie d'erreur . Définissez les paramètres appropriés pour error_reporting , display_errors , display_startup_errors dans le php.ini Correspondant:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On

Si vous ne souhaitez pas modifier le comportement de rapport d'erreurs CLI dans la portée globale, vous pouvez utiliser PHPUnit bootstrap pour définir ces paramètres).

1. Configuration bootstrap pour PHPUnit . Ouvrez le fichier /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml Et ajoutez l'attribut bootstrap à la balise phpunit:

<phpunit bootstrap="bootstrap.php">

2. Créez bootstrap.php dans le dossier avec 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');
30

Il s'agit d'un problème très courant, en particulier lorsque vous exécutez des tests sur un serveur de production ou lorsque le testeur n'est pas très conscient de la configuration PHP.

Le problème est lié à php.ini paramètres, comme indiqué par Alexander Yancharuk dans sa réponse et toutes les solutions qu'il suggère fonctionnent très bien.

Mais il existe une autre solution qui peut être utile, comme pour moi, qui consiste à définir les paramètres PHP appropriés dans le fichier de configuration PHPUnit (XML) lui-même, comme suit:

<phpunit>
    <suites>
        ...
    </suites>
    <php>
        <ini name="display_errors" value="On" />
        <ini name="display_startup_errors" value="On" />
    </php>
</phpunit>

En utilisant cela, vous pouvez personnaliser non seulement l'affichage des erreurs, mais aussi une grande partie de la configuration PHP, spécifiquement pour votre suite de tests, laissant votre configuration de production intacte et sans avoir à écrire un bootstrap fichier uniquement pour cela.

46
Victor Schröder