« SPARQL Protocol and RDF Query Language/Travail pratique/Initiation à PHPUnit » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Changement de type cosmétique |
Aucun résumé des modifications |
||
Ligne 14 :
== Introduction ==
=== Pourquoi utiliser PHP ? ===
=== Durée du TP ===
Ligne 26 :
PHPUnit fournit un cadre simple pour créer une suite de tests pour automatiser les tests unitaires de fonctions et de classes.
PHPUnit est inspiré par JUnit qui a été créé par Kent Beck et Erich Gamma pour être un outil pour l'[[w:Extreme programming|eXtreme programming]] (ou XP). Une des règles de XP est de tester les composants logiciels aussi souvent que possible et le plus tôt possible. De cette façon vous n'aurez
Généralement, le développement des [[w:Test unitaire|tests unitaires]] avec PHPUnit est à faire quel que soit le nombre de personnes sur un projet et on applique les autres règles XP qu'à partir de 4 ou 5 personnes développant sur le même projet.
Ligne 40 :
* [http://www.phpunit.de/manual/current/en/index.html Documentation officielle de PHPUnit]
* [http://pear.php.net/manual/en/package.php.phpunit.php Tutoriel en anglais]
* [http://www.phing.info/docs/guide/stable/
== Installation ==
=== PHPUnit ===
PhpUnit n'est pas toujours évidant à installer. Il ne faut pas hésiter à regarder sur
Nous installons les paquets :
Ligne 50 :
* php5-curl librairie de communication réseau pour PHP qui est utilisé par phpunit 3.5
1. Taper ces commandes :
'''Sous Ubuntu'''
Ligne 64 ⟶ 66 :
(A vérifier)'''Sous Fedora'''
<source lang="bash">
su -
yum install build-essential phpunit php5-curl
pear channel-discover pear.phpunit.de
Ligne 72 ⟶ 75 :
</source>
2. Vérifier la version installée par PHPUnit avec la commande suivante :
<source lang="bash">
phpunit --version
Ligne 80 ⟶ 83 :
=== Phing ===
Phing est un outil qui va permettre de déployer notre projet mais aussi d'exécuter nos tests unitaires avec PhpUnit.
Installer Phing avec ces commandes :
Ligne 107 ⟶ 110 :
Les débutants en PHP pensent souvent à tort qu'il suffit de faire quelques echo, print_r() ou var_dump() pour tester leurs programmes. Dés lors que quelqu'un développe de cette manière, il est très difficile de modifier cette habitude.
Les tests doivent accompagnés toutes la vie d'un logiciel. Si un développeur modifie un logiciel sans maintenir les tests associés, il brise la chaîne vertueuse que ses pères ont essayé de maintenir et fait du logiciel une version Beta pour toujours (c'est
De plus, la méthode agile (ou Extreme Programming)
'''Voici la méthode pour développer des tests unitaires quel que soit le langage :'''
#
# créer une suite de tests
# ajouter votre suite de tests dans le script de déploiement de votre logiciel (insérer dans votre "usine de développement" si c'est un projet à plus de 4 ou 5 personnes à plein temps)
Ligne 131 ⟶ 134 :
Dans ce TP, nous n'utiliserons pas d'usine de développement comme [[w:Jenkins (informatique)|Jenkins]] ou [[w:en:Comparison of Continuous Integration Software|autres]] car nous considérons que nous sommes seuls sur ce projet et que nous pouvons déployer le code sans aucune validation extérieur.
Nous développerons dans ce TP un simple script
=== Concevoir l'arborescence de votre projet ===
Ligne 144 ⟶ 147 :
Dans ce répertoire de développement, nous retrouverons généralement :
* un fichier <code>README</code> qui indique comment déployer et tester le projet ;
* un fichier <code>
* un répertoire <code>src</code> qui contient les sources que vous avez développées ;
* un répertoire <code>tests</code> qui contient les tests des sources que vous avez développées ;
Ligne 167 ⟶ 170 :
}}
On créera le fichier
=== Concevoir votre classe ===
Nous supposons que nous avons besoin de faire une classe String.
'''Exercice''' : </br>
1. Créer le fichier String.class.php dans le répertoire ~/projets/moncv/src 2. Insérer la classe ci-dessous dans ce fichier </br> <source lang="php">
<?php
Ligne 209 ⟶ 213 :
Une fonction de test appelle des fonctions avec des paramètres pour obtenir une certaine valeur. Si la valeur obtenue est différente de la valeur attendue, la fonction de test génère une erreur qui fera échouer la suite de tests.
'''Exercice : Créer
1. Créer dans le répertoire tests du projet la classe String.test.php.<br/>
2. Insérer le texte ci-dessous.<br/>
<source lang="php">
<?php
Ligne 266 ⟶ 272 :
=== Créer la suite des tests ===
Nous devons dans un premier temps agréger les tests
▲Nous devons dans un premier temps agréger les tests dans une suite dans une classe PHP que l'on nomme ClassTest dans le répertoire "tests" du projet.
'''Exercice''' : Créer le fichier ClassTest.php dans le répertoire tests qui contiendra le texte ci-dessous.
Ligne 333 ⟶ 338 :
=== Créer le script de déploiement ===
On crée
Pour le moment, il contiendra seulement les lignes suivantes.
Ligne 375 ⟶ 380 :
</source>
On peut lancer les tests
<source lang="bash">
phing
Ligne 381 ⟶ 386 :
=== Créer le fichier README ===
On crée pour finir le fichier README pour décrire notre programme et la manière de le tester.
{{remarque|titre=Remarque|contenu=
'''Exercice''' : Créer le fichier README à la racine du projet moncv qui contiendra le texte ci-dessous.
|