Phpunit, les variables $_SERVER["nom_du_champ"] et quelques autres surprises

Tester son application est une bonne habitude - personne n'ira soutenir le contraire. Et Phpunit est un des outils majeurs pour ce faire en PHP.

Si l'application à tester tourne avec Zend Framework 1.11, il faut d'abord savoir que Phpunit 3.6.x n'est a priori pas compatible et qu'il faut se rabattre sur les versions 3.4.x (la branche phpunit 3.4 est mentionnée dans la documentation officielle Zend Framework comme celle à privilégier) et peut-être 3.5.x.

Variables $_SERVER

Je butai sur une autre difficulté : l'application à tester utilise plusieurs variables serveur du type $_SERVER"nom_du_champ" qui sont normalement fournies par un SSO (mécanisme d'authentification qui pousse l'identité de l'utilisateur dans les variables $_SERVER. En temps normal, c'est donc le serveur Web qui s'occupe de peupler les variables $_SERVER - qui peut s'en charger pour les tests ? Phpunit peut le faire : on peut ajouter la ligne suivante dans le fichier phpunit.xml (qui définit les tests) :

<server name="nom_du_champ" value="1234567"/>

En PHP, la variable $_SERVER"nom_du_champ" sera alors accessible au cours des tests et aura la valeur '1234567'.

Phpunit 3.4 s'arrête avec un 'x'

Plus tard, Phpunit s'arrêta au cours d'un test sans aucune information, terminant la ligne par le signe pourcent % :

PHPUnit 3.4.14 by Sebastian Bergmann.

.....% 

Normalement, phpunit explique les raisons de l'arrêt et est suffisamment verbeux pour permettre le débogage. Il semble qu'un arrêt aussi brutal soit dû à l'utilisation de la fonction 'exit' dans le code de l'application. En effet, 'exit' stoppe l'exécution de tout code et phpunit n'y échappe pas et s'éteint sans avoir le temps de terminer son travail et de nous glisser à l'oreille les résultats des tests (non achevés d'ailleurs).