Assurer la compatibilité des tests PHPUnit 6 avec les versions antérieures
PHPUnit version 6
a été tagguée le 3 février 2017. Cette nouvelle version n’est dorénavant compatible
qu’avec PHP 7+. Un changement majeur introduit par cette nouvelle branche est le
renommage de la classe PHPUnit_Framework_TestCase
en PHPUnit\Framework\TestCase
.
Si comme moi, il vous arrive de tester une même branche de code avec plusieurs
versions de PHP, cela pourra être un problème.
J’ai eu le cas cette semaine, où, sur une base de code toujours maintenu (mais
plus pour très longtemps) sur les versions PHP 5.3+. Sans rentrer dans les détails
techniques, pour simplifier l’exécution des tests, nous récupérons une version de
PHPUnit avec la définition Composer suivante : phpunit/phpunit:@stable
. Ce n’est
certes pas l’idéal ni une excellente pratique, mais cela fonctionne bien.
Lors du passage des tests avec PHP 7, nous récupérons ainsi la version 6 de PHPUnit
qui provoque alors une erreur puisque la classe PHPUnit_Framework_TestCase
qui
était utilisée jusque-là n’est plus disponible.
En attendant la fin du support des versions de PHP 5.x pour le code concerné, la solution de contournement utilisé a été de définir un alias de classe dans le “bootstrap” de PHPUnit de la manière suivante :
De ce fait, si la classe PHPUnit_Framework_TestCase
n’existe pas, c’est que nous
sommes certainement en train d’éxecuter la nouvelle version de PHPUnit. Et nous
définissons donc un alias vers la classe PHPUnit\Framework\TestCase
si cette
dernière existe.