MA GALAXIE WEB

LETTRE D'INFORMATION

Nom

Courriel (e-mail)


RECHERCHER



Mon blog d'écrivain

RSS

flux RSS
RSS Commentaires

"Poor Lonesome Coder", parce que pendant longtemps j'ai codé seul, sans collégue. Et je m'en allais
dans la lumiére de l'écran couchant, sur mon fidèle Jolly Clavieur, en chantant une chanson... ;-)

MyUnit : tests avec PHP/MySQL

aide aux tests unitaires de programmes PHP utilisant MySQL

Praticien XP depuis maintenant quelques mois, j'ai cherché à convertir petit à petit mon projet RAT aux tests unitaires. Les tests unitaires servent à vérifier que chaque fonction, chaque classe fait bien ce que l'on attend d'elle. Ils font partie de l'application au sens où on peut les exécuter n'importe quand pour vérifier que tout est correct.
Plus d'infos sur XP et les tests unitaires ci-dessous.
Le problème des tests unitaires est qu'ils s'accomode mal des fonctions à effet de bord (écrivant dans un fichier ou dans une base de données) et des variables globales. Les variables globales, c'est mal, donc on évite ;-) par contre les fichiers et bases de données c'est utile.

MyUnit permet donc, sur une copie de la base de données, de vider les tables, de les remplir avec des données adéquates, et de tester le contenu d'une table. La documentation est dans le code et les tests, pour le moment.

MyUnit est bien sur fournie avec ses tests unitaires, version 0.6 de phpUnit. J'en suis à la toute première version, nommée 0.1 mais elle fonctionne bien pour moi. N'hésitez pas à me poser des questions ou à me signaler des problèmes. Si vous pouvez écrire le test qui met en lumière le probleme c'est parfait, si vous pouvez corriger le problème c'est divin.

Exemple d'utilisation pour remplir quelques tables de RAT

VidangeTable('ratinscrits');
RemplitTable('ratinscrits', array(array('ins_nom'=>'CedricG', 'ins_nomcomplet'=>'Cédric Girard', 'ins_courriel'=>'cedric@daneel.net', 'ins_localisation'=>'Mont de Marsan, Landes', 'ins_private'=>0, 'ins_donnees'=>''), array('ins_nom'=>'Test', 'ins_nomcomplet'=>'', 'ins_courriel'=>'', 'ins_localisation'=>'', 'ins_private'=>0, 'ins_donnees'=>'')));
VidangeTable('ratadminvitrine');        
RemplitTable('ratadminvitrine', array(array('adv_id'=>1, 'adv_ident'=>'editinfos'), array('adv_id'=>2, 'adv_ident'=>'pa_params'), array('adv_id'=>3,'adv_ident'=>'pa_liste')));        
VidangeTable('ratlnk_sitadv');
RemplitTable('ratlnk_sitadv', array(array('sit_id'=>3, 'adv_id'=>1, 'ads_autoinscript'=>1), array('sit_id'=>3, 'adv_id'=>2, 'ads_autoinscript'=>1), array('sit_id'=>3, 'adv_id'=>3, 'ads_autoinscript'=>0)));
VidangeTable('ratlnk_advins');

Exemple de vérification d'une table

$tab=array(array('id'=>1, 'ch'=>'un'), array('id'=>2, 'ch'=>'deux'));
$this->assertTrue(VerifieTable('myTests', $tab), 'simple remplissage');

Fichier(s)

Lien(s)

12/02/2004 - Cédric Girard