|
|
## Introduction
|
|
|
|
|
|
- En PHPUnit on retrouvera la même structuration des classes implémentant les tests qu'en JUnit
|
|
|
- les TestCases étendent toutes PHPUnit_Framework_TestCase
|
|
|
- les méthodes de test commencent toutes par testXXX()
|
|
|
- ou alors les méthodes de test sont annotées par /** *@test */ XXX()
|
|
|
|
|
|
- les TestSuites sont matérialisés soit par :
|
|
|
- des TestCases regroupés dans des répertoires spécifiques
|
|
|
```
|
|
|
- TestSuite
|
|
|
- DossierTestCaseX
|
|
|
- TestCaseX1.php
|
|
|
- TestCaseX2.php
|
|
|
- ..
|
|
|
- DossierTestCaseY
|
|
|
- TestCaseY1.php
|
|
|
- TestCaseY2.php
|
|
|
- ..
|
|
|
```
|
|
|
- des TestCases répertoriés dans le fichier de configuration phpunit.xml section
|
|
|
```#!xml
|
|
|
<phpunit>
|
|
|
<testsuites>
|
|
|
<testsuite name="ts1">
|
|
|
<file>Test1.php</..>
|
|
|
..
|
|
|
</phpunit>
|
|
|
```
|
|
|
|
|
|
- Documentation et logiciel disponibles [ici](http://phpunit.de/). Pour les anciennes versions de PHP, vous pouvez récupérer une version antérieure de PhpUnit [ici](http://www.phpunit.de)
|
|
|
|
|
|
## Travail à effectuer
|
|
|
- Reprendre les exercices proposés dans la section [JUnit exercices](JUnitExo) en les transposant en PHPUnit.
|
|
|
|
|
|
- Les classes Money src et test en php
|
|
|
- [money_php.zip](http://www.fil.univ-lille1.fr/~bilasco/OTI/money_php.zip)
|
|
|
- Lors de desarchivage vous obtiendrez un répertoire **money_php** contenant les dossiers **src** et **test**
|
|
|
|
|
|
## Tests avec Netbeans (au M5)
|
|
|
|
|
|
- Créer un projet Php en Netbeans avec sources existantes
|
|
|
- Indiquer que les sources du projet se trouvent dans **money_php**
|
|
|
- Normalement, il faudra séparer entre src (Source files) et test (Test files).
|
|
|
- Chez vous, vous pouvez séparer les src et les tests, et en configurant PHPUnit sous Netbeans, vous pourrez exécuter les tests en local.
|
|
|
- Choisir le nom de votre projet
|
|
|
- Choisir de placer les Project Metadata dans un autre répertoire
|
|
|
- Configurer l'application Php comme une application "with existing Sources"
|
|
|
- Associer les sources à votre dossier contenant les src et les tests
|
|
|
- Choisissez "Put NetBeans data into a separate directory" afin de faciliter la séparation entre fichiers de configuration de votre projet et vos sources
|
|
|
- Dans l'écran concernant "Run Configuration" choisissez "Run As : PHP Built-In Web Server"
|
|
|
|
|
|
- Configurer PhpUnit
|
|
|
- Dans les propriétés de projet (Properties/Testing) cochez PhpUnit
|
|
|
- Ajoutez également depuis ce même onglet le dossier de tests (Test Directories : Add Folder)
|
|
|
- Dans l'onglet Properties/Testing/PhpUnit indiquez le chemin vers le fichier PhpUnit.phar téléchargé
|
|
|
- Ensuite, depuis la vue projet, faites des cliques droite + Run sur chaque fichier test que vous souhaitez exécuter.
|
|
|
|
|
|
## Exécution de tests (en ligne de commande)
|
|
|
|
|
|
- Vous pouvez lancer un serveur PHP local en dehors de NetBeans en utilisant la commande suivante *** php -S 127.0.0.1:8080 -t CHEMIN *** où CHEMIN correspond à la racine de votre projet
|
|
|
|
|
|
- Se placer dans le répertoire PROJET
|
|
|
|
|
|
- Lancer tous vos tests dans le répertoire **test** avec '''phpunit test'''
|
|
|
- ou alors remplacez le **test** par le nom du fichier à exécuter.
|
|
|
|
|
|
- cela exécutera tous les tests contenus dans les fichiers ** *Test.php ** du répertoire **test** et ses éventuels sous-repertoires
|
|
|
|
|
|
### Jouer avec ...
|
|
|
|
|
|
- En analysant le code src et test, peut-on tirer une conclusion quelconque quant à la correctitude de la méthode MoneyOps.simpleAdd ?
|
|
|
|
|
|
- Que doit-on faire avant ? Modifier la classe Money et écrivez les tests adéquats pour valider vos modifications.
|
|
|
|
|
|
- Re-tester le testcase MoneyOpsAddTest. Qu'observez-vous?
|
|
|
|
|
|
- Peut-on conclure que l'implémentation est correcte ? Si besoin, modifier la classe, ajouter des méthodes de test dans le testcase, etc.
|
|
|
- N'oubliez pas qu'après chaque modification sur une classe vous devez ré-éxecuter l'ensemble des tests.
|
|
|
|
|
|
### Créer des nouveaux méthodes de test
|
|
|
- Etendre le testcase MoneyOpsAdd pour couvrir le plus possible les cas de figures possibles
|
|
|
- Créer des nouvelles opérations et les testcases correspondants
|
|
|
- par exemple : soustraction (v1 - v2 avec une exception si v1 < v2 ou si pas la même unité monétaire)
|
|
|
- pour lever une exception en PHP il faut utiliser **throw new NOM_CLASSE_Exception();**
|
|
|
- pour indiquer qu'un test doit lever une exception, placer ce code dans la fonction de test : **$this->setExpectedException('NOM_CLASSE_Exception');**
|
|
|
|
|
|
### Tests "croisés" (optionnel)
|
|
|
- Une fois que vous estimé avoir corrigé le code envoyez-le à la personne à votre gauche, en mettant en place un svn/hg/git de commun accord.
|
|
|
|
|
|
- Demandez-lui de tester votre code. |
|
|
\ No newline at end of file |