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.

Add new comment