Tests unitaires

Pour celles et ceux qui commenceraient à s’intéresser aux tests unitaires avec PHPUnit, je vous recommande de prendre le temps d’éplucher la documentation en français.

Il est aussi utile de s’intéresser à la différence entre Tests Unitaires et Tests Fonctionnels : en gros, un test unitaire vérifie au minium le résultat d’une fonction dans un contexte isolé alors qu’un test fonctionnel vérifie que cette fonction, réagira conformément à ce qu’on attend d’elle quand elle est intégrée dans un système plus vaste. (je parle de fonction PHP, pas de la fonctionnalité au sens large de votre plugin) : l’unité de base à tester, c’est une fonction PHP, pour simplifier.

En langage spipien, ça signifie qu’un test unitaire doit pouvoir être exécuté avec le seul code d’un plugin par exemple (sans dépendance à SPIP, ni au contenu d’un serveur de base de données ni d’un serveur web, donc). De là découle que notre framework de test est un mix de tests unitaires et fonctionnels. Il nécessite une base avec un jeu de données précis servant à vérifier le comportement complet d’un SPIP et de ses plugins (plugins-dist) et accessoirement du votre.

Il est vrai qu’aujourd’hui, il est difficile d’isoler le code d’un plugin SPIP. Parmi les chantiers de la version 4.2 de SPIP, j’espère pouvoir introduire le mécanisme qui améliorerait l’isolation du code.

Il existe quelques exemples, notamment dans le plugin archiviste mais aussi dans le plugin supportedversions. Je vous recommande de ne pas simplement copier/coller ces tests et de nommer vos classes de test, ainsi que vos fonctions de test avec des noms qui ont du sens pour vos plugins en restant au plus très des conventions proposées par l’outil.

Si vous êtes à la recherche de tutoriels, je vous conseille, entre autres, les vidéos de Grafikart :

Bonne lecture et bon visionnage :slight_smile:

2 « J'aime »