Skip to content
Thomas Recouvreux edited this page Nov 18, 2013 · 6 revisions

Les unittests

Lancer les unittests

Configurer son environement

Copier le fichier /tests/config.inc.dist.php vers /tests/config.inc.php, puis l'adapter. Note: les unittests auront besoin d'une BDD, il est conseillé d'utiliser une db à part étant donnée qu'elle sera vidée pour les tests.

Il faudra ensuite s'assurer que les dépendances sont présentes: php composer.phar install --dev

Go !

Lancer tous les tests

cd tests
./run_all.sh

Lancer un test en particulier

Il est possible de ne lancer qu'un test en particulier.

cd tests
./phpunit MonTest.php # lance les tests du fichier MonTest.php
./phpunit MonAutreTest.php # lance les tests du fichier MonAutreTest.php
./phpunit --filter testFoo MonTest.php # lance la fonction testFoo du fichier MonTest.php

Ecrire des unittests

Include utils.php

utils.php contient des sous classes du framework php unit permettant d'optimiser et de simplifier les tests sur la BDD. Il met aussi en place la config à partir de /tests/config-test.inc.php

Les 3 types de tests

Pour des raisons de performance il est conseillé de séparer ses unittests pour une classe en 3 types :

  1. Les tests ne nécessitant aucun accès à la BDD
  2. Les tests nécessitant un accès en lecture seulement à la BDD
  3. Les tests nécéssitant un accès complet à la BDD

Par exemple pour les unittests de la classe MyClass on aura dans l'ordre : MaClassTest, MaClassRodbTest et MaClassRwdbTes qui héritent respectivement de PHPUnit_Framework_TestCase, ReadOnlyDatabaseTest et DatabaseTest.

La raison pour laquelle il faut éviter de tout mettre dans un DatabaseTest et qu'à chaque test de ce testcase, la BDD est entièrement vidée et re-remplie avec les fixtures, ce qui s'avère rapidement coûteux en temps.

Clone this wiki locally