Prev Next

Chapitre 3. Installer PHPUnit

PHPUnit doit être installé en utilisant l'installateur PEAR, la colonne vertébrale du dépôt d'extensions et d'applications PHP (PHP Extension and Application Repository) qui apporte un système de distribution pour les paquets PHP.

Attention

Selon votre distribution de système d'exploitation et/ou votre environnement PHP, vous pouvez avoir besoin d'installer PEAR ou de mettre à jour votre installation existante de PEAR avant de pouvoir suivre les instructions de ce chapitre.

sudo pear upgrade PEAR suffit habituellement pour mettre à jour une installation PEAR existante. Le manuel PEAR explique comment réaliser une nouvelle installation de PEAR.

Note

PHPUnit 3.7 nécessite PHP 5.3.3 (ou ultérieur) mais PHP 5.4.0 (ou ultérieur) est fortement recommandé.

PHP_CodeCoverage, la bibliothèque qui est utilisée par PHPUnit pour rassembler et traiter les informations de couverture de code, dépend de Xdebug 2.0.5 (ou ultérieure) mais Xdebug 2.2.0 (ou ultérieur) est fortement recommandé.

Les deux commandes suivantes (que vous aurez peut-être à exécuter en tant que super-administrateur, i.e. root )sont tout ce qui est nécessaire pour installer PHPUnit en utilisant l'installateur PEAR:

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit

Les paquets facultatifs suivants sont disponibles :

DbUnit

Portage de DbUnit pour PHP/PHPUnit destiné à gérer les tests interagissant avec des bases de données.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/DbUnit
PHPUnit_Selenium

Intégration de Selenium RC pour PHPUnit.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_Selenium
PHPUnit_Story

Lanceur de tests basés sur des histoires pour les développements dirigés par le comportement (Behavior-Driven Development) avec PHPUnit.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_Story
PHPUnit_SkeletonGenerator

Outil qui permet de générer des squelettes de classes de test à partir des classes du code de production et vice versa.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_SkeletonGenerator
PHPUnit_TestListener_DBUS

Un moniteur de tests qui envoie des événements à DBUS.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_TestListener_DBUS
PHPUnit_TestListener_XHProf

Un moniteur de tests qui utilise XHProf pour profiler automatiquement le code testé.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_TestListener_XHProf
PHPUnit_TicketListener_Fogbugz

Un moniteur de tickets qui interagit avec l'API d'incidents de FogBugz.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_TicketListener_Fogbugz
PHPUnit_TicketListener_GitHub

Un moniteur de tickets qui interagit avec l'API d'incidents de GitHub.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_TicketListener_GitHub
PHPUnit_TicketListener_GoogleCode

Un moniteur de tickets qui interagit avec l'API d'incidents de Google Code.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_TicketListener_GoogleCode
PHPUnit_TicketListener_Trac

Un moniteur de tickets qui interagit avec l'API d'incidents de Trac.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHPUnit_TicketListener_Trac
PHP_Invoker

Une classe utilitaire pour invoquer des appels avec un délai d'expiration. Ce paquet est nécessaire pour mettre en oeuvre des dépassements de délais pour les tests en mode strict.

Ce paquet peut être installé en utilisant la commande suivante :

pear install phpunit/PHP_Invoker

Après l'installation, vous trouverez les fichiers du code source de PHPUnit dans votre répertoire local PEAR; le chemin d'accès est habituellement /usr/lib/php/PHPUnit.

Prev Next
1. Automatiser les tests
2. Objectifs de PHPUnit
3. Installer PHPUnit
4. Ecrire des tests pour PHPUnit
Dépendances des tests
Fournisseur de données
Tester des exceptions
Tester les erreurs PHP
Tester la sortie écran
Assertions
assertArrayHasKey()
assertClassHasAttribute()
assertClassHasStaticAttribute()
assertContains()
assertContainsOnly()
assertCount()
assertEmpty()
assertEqualXMLStructure()
assertEquals()
assertFalse()
assertFileEquals()
assertFileExists()
assertGreaterThan()
assertGreaterThanOrEqual()
assertInstanceOf()
assertInternalType()
assertJsonFileEqualsJsonFile()
assertJsonStringEqualsJsonFile()
assertJsonStringEqualsJsonString()
assertLessThan()
assertLessThanOrEqual()
assertNull()
assertObjectHasAttribute()
assertRegExp()
assertStringMatchesFormat()
assertStringMatchesFormatFile()
assertSame()
assertSelectCount()
assertSelectEquals()
assertSelectRegExp()
assertStringEndsWith()
assertStringEqualsFile()
assertStringStartsWith()
assertTag()
assertThat()
assertTrue()
assertXmlFileEqualsXmlFile()
assertXmlStringEqualsXmlFile()
assertXmlStringEqualsXmlString()
5. Le lanceur de tests en ligne de commandes
Options de la ligne de commandes
6. Fixtures
Plus de setUp() que de tearDown()
Variantes
Partager les Fixtures
Etat global
7. Organiser les tests
Composer une suite de tests en utilisant le système de fichiers
Composer une suite de tests en utilisant la configuration XML
8. Tester des bases de données
Systèmes gérés pour tester des bases de données
Difficultés pour tester les bases de données
Les quatre phases d'un test de base de données
1. Nettoyer la base de données
2. Configurer les fixtures
3–5. Exécuter les tests, vérifier les résultats et nettoyer
Configuration d'un cas de test de base de données PHPUnit
Implémenter getConnection()
Implémenter getDataSet()
Qu'en est-il du schéma de base de données (DDL)?
Astuce: utilisez votre propre cas de tests abstrait de base de données
Comprendre DataSets et DataTables
Implémentations disponibles
Attention aux clefs étrangères
Implementer vos propres DataSets/DataTables
L'API de connexion
API d'assertion de base de données
Faire une assertion sur le nombre de lignes d'une table
Faire une assertion sur l'état d'une table
Faire une assertion sur le résultat d'une requête
Faire une assertion sur l'état de plusieurs tables
Foire aux questions
PHPUnit va-t'il (re-)créer le schéma de base de données pour chaque test ?
Suis-je obligé d'utiliser PDO dans mon application pour que l'extension de base de données fonctionne ?
Que puis-je faire quand j'obtiens une erreur « Too much Connections (Trop de connexions) » ?
Comment gérer les valeurs NULL avec les DataSets au format XML à plat / CSV ?
9. Tests incomplets et sautés
Tests incomplets
Sauter des tests
Sauter des tests en utilisant @requires
10. Doublure de test
Bouchons
Objets simulacres (Mock Objects)
Bouchon et simulacre pour Web Services
Simuler le système de fichiers
11. Pratiques de test
Pendant le développement
Pendant le débogage
12. Développement dirigé par les tests
Exemple du compte bancaire
13. Développement dirigé par le comportement
Exemple du jeu de Bowling
14. Analyse de couverture de code
Spécifier les méthodes couvertes
Ignorer des blocs de code
Inclure et exclure des fichiers
Cas limites
15. Autres utilisations des tests
Documentation agile
Tests transverses à l'équipe
16. Générateur de squelette
Générer un squelettre de classe de cas de test
Générer un squelette de classe à partir d'une classe de cas de test
17. PHPUnit et Selenium
Selenium Server
Installation
PHPUnit_Extensions_Selenium2TestCase
PHPUnit_Extensions_SeleniumTestCase
18. Journalisation
Résultats de test (XML)
Résultats de test (TAP)
Résultats de test (JSON)
Couverture de code (XML)
Couverture de code (TEXTE)
19. Etendre PHPUnit
Sous-classe PHPUnit_Framework_TestCase
Ecrire des assertions personnalisées
Implémenter PHPUnit_Framework_TestListener
Sous classer PHPUnit_Extensions_TestDecorator
Implémenter PHPUnit_Framework_Test
A. Assertions
B. Annotations
@author
@backupGlobals
@backupStaticAttributes
@codeCoverageIgnore*
@covers
@coversNothing
@dataProvider
@depends
@expectedException
@expectedExceptionCode
@expectedExceptionMessage
@group
@outputBuffering
@requires
@runTestsInSeparateProcesses
@runInSeparateProcess
@test
@testdox
@ticket
C. Le fichier de configuration Configuration
PHPUnit
Série de tests
Groupes
Inclure et exclure des fichiers de la couverture de code
Journalisation
Moniteurs de tests
Configurer les réglages de PHP INI, les constantes et les variables globales
Configurer les navigateurs pour Selenium RC
D. Index
Index
E. Bibliographie
F. Copyright