Avoir plusieurs assertions dans le même test est une bonne chose, mais lorsqu'une assertion échoue, l'ensemble du test est abandonné et les autres assertions du même test ne sont pas testées.
En fonction de ce que vous testez et de la façon dont vous l'avez codé, vous souhaiterez peut-être diviser certains tests en plusieurs sous-tests.
OverAssertive est une extension PHPUnit qui signale directement dans la console quels tests ont "trop" d'assertions, où "trop" est ce que vous définissez, pour vous aider à inspecter et peut-être à refactoriser certains tests.
Activez-le avec toutes les valeurs par défaut en ajoutant ce qui suit au fichier phpunit.xml
de votre suite de tests :
<phpunit bootstrap="vendor/autoload.php"> ... <auditeurs> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener" /> </auditeurs> </phpunité>
Si vous n'utilisez pas de chargeur automatique, vous pouvez également spécifier l'emplacement de la bibliothèque :
<phpunit bootstrap="boostrap.php"> ... <auditeurs> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener" file="/path/to/OverAssertiveTestsListener.php" /> </auditeurs> </phpunité>
Exécutez maintenant votre suite de tests normalement. OverAssertive rendra compte des tests assertifs dans la console une fois la suite terminée.
OverAssertive a deux paramètres configurables :
alertThreshold - Nombre d'assertions qui rendront un test plus assertif (par défaut : 10 assertions)
reportLength - Nombre de tests sur-affirmatifs inclus dans le rapport (par défaut : 10 tests)
Ces paramètres de configuration sont définis dans phpunit.xml
lors de l'ajout de l'écouteur :
<phpunit ...><!-- ... autre configuration de la suite ici ... --><listeners> <listener class="OzhPHPUnitListenerOverAssertiveTestsListener"> <arguments> <tableau> <element key="alertThreshold"> <entier>10</entier> </élément> <element key="reportLength"> <entier>10</entier> </élément> </tableau> </arguments> </auditeur> </auditeurs> </phpunité>
Un grand merci à phpunit-speedtrap
Faites ce que vous voulez.