PHPUnit n'aime pas les exits

PHPUnit n'aime pas les exits

J'avais un test unitaire basé sur Zend_Test qui ne s'exécutait pas. La seule sortie que j'obtenais c'était l'entête PHPUnit :

PHPUnit 3.3.16 by Sebastian Bergmann.

J'ai d'abord pensé que c'était Zend_Loader_Autoloader qui me jouait des tours. J'ai donc commencé à ajouter des require_once un peu partout (une vraie galère). Mais en fait ce n'était pas lui qui était en cause.

J'ai fini par localiser la source du problème : un simple exit. J'utilisais la méthode gotoSimpleAndExit de Zend_Controller_Action_Helper_Redirector, ce qui entraine la sortie directe du script et empêche l'exécution complète de PHPUnit et donc l'affichage des résultats.

Si on se plonge dans le code de Zend_Test_PHPUnit_ControllerTestCase et Zend_Controller_Action_Helper_Redirector, on se rend compte que Zend_Test désactive exit de façon à ce que les scripts de test ne soient pas interrompus. Si on utilise une des méthodes se terminant par Exit, exit est systématiquement appelée.

Il faut donc éviter l'usage de ces méthodes, car elles empêchent le test du code. Dommage que la documentation ne mentionne pas ce point.

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account, used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.