Skip to topic | Skip to bottom
Home
Linfo
Linfo.ProjetDev2012TestsUnitairer1.1 - 15 Nov 2012 - 13:25 - PhilippeReneviertopic end

Start of topic | Skip to actions

Projet de développement - SimpleTest - les tests unitaires en Php

SimpleTest

La page officielle de SimpleTest est http://www.simpletest.org/ . \De là vous pouvez télécharger ce framework de test unitaire en php, qui vous permettra de faire du test unitaire de fonctions / méthodes / classes, mais aussi pour faire des tests de navigation (simulation d'un navigateur)

il y a une page pour débuter : http://www.simpletest.org/en/start-testing.html

Dans les sous pages de http://simpletest.org/en/overview.html , on retrouve l'api (insérée dans la doc), c'est à dire toutes les fonctions utilisables pour tester le code.

Dans les sous pages de http://simpletest.org/en/first_test_tutorial.html , on retrouve des exemples (mais pas tout l'api)

Exemple d'utiliation

l'exemple : un site sur le cinéma

Un exemple de tests et leur code php (via les .txt) sont accessibles dans ce dossier test.

Le site en lui même est visible sur le serveur www-mips.unice.fr.

Il demande une connexion par mot de passe : vous pouvez utiliser Lewis / Raymond / mdp comme login.

configuration

Tous les fichiers tests (reconnaissables par leur extension .test.php) commencent par inclure le fichier ParamTest.inc : require_once('ParamTest.inc');

Celui-ci permet d'ajouter SimpleTest à l'include_path de Php : Php saura rertouver les fichiers de SimpleTest pour exécuter les tests. Ce qui suit est à faire si vous ne pouvez pas modifier le fichier de configuration php.ini (variable include_path à compléter) : set_include_path(get_include_path() . PATH_SEPARATOR . "../../simpletest");

Dans cette exemple, le dossier simpletest (qui comprend tous les fichiers nécessaires à l'exécution des tests) se situe dans le dossier parent du dossier parent de l'endroit où sont les fichiers de tests.

Finalement le ficher ParamTest.inc contient une classe ParamTest qui ne contient qu'un champ static (utilisable ainsi ParamTest::$host) pour définir l'adresse du site ainsi testé. Cela permettra de faire vos tests de navigation sur n'importe quel serveur (localhost, www-mips.unice.fr, etc.)

1er exemple de test unitaire

testUnit.test.php : ce test unitiare permet de vérifier qu'une "énumération" ne contient que ce qu'elle doit contenir (ATTENTE, DEMANDE, ACCEPTE). Cette énumération ne doit contenir que 3 valeurs données. Il est donc vérifier que ces 3 valeurs sont dedans, qu'il n'y a que 3 valeurs, et aussi qu'une autre valeur (ACK) n'est pas dedans.

2ième exemple de test unitaire

testUnit.Data_People.test.php : ce test unitaire permet de vérifier que la modification de la date de mort d'une personne se fait correctement.

Ce test ne passe pas.

Seule une année sur 4 chiffres est voulue. Le test comprend deux fois les mêmes tests ("toto", 1985, 45), mais le fait de deux façons. La première est "manuelle" et par copier/coller. La seconde est un peu plus automatique, il faut remplir deux tableaux : $values pour les valeurs initiales, $expected pour les valeurs attendues après le setMort. La deuxième version est plus complète en terme de valeurs testées.

Voici le code de la méthode, elle ne respecte pas les spécifications (années sur 4 chiffres), mais pire, si on passe en paramètre n'importe quoi, la valeur affectée sera 0 (résultat de la conversion d'une chaine de caractère qui n'est pas un nombre en int) :

   public function setMort( $mort) {
      if (is_int($mort)) $this->mort = (int) $mort;
      else {
            $cast = (int) $mort;
            if ($cast >= -1) $this->mort = $cast;
            
            
         }
   }

exemple de test de navigation

navigationFilm.test.php : ce test de navigation vérifie qu'on ne peut pas accéder à une page sans être connecté et que si on se connecte dans la foulé, on sera redirigé vers la page initialement voulue.

Le test définie dans la méthode testRedirectionConnexion le fait pour une page. Le test définie dans la méthode testRedirectionConnexionDeconnexion le fait pour toutes les pages du tableau $values et en plus test la déconnexion.

lancer tous les tests

global.test.php : cette collection de test permet d'inclure tous les fichiers .test.php (à l'exception de lui-même) et donc de lancer tous les tests en une seule fois.

Notez que pour accéder aux fichiers, le test TestAll utilise la variable global $dir afin d'assurer le positionnement de la lecture du fichier au bon niveau de la hiérarchie des fichiers.

La méthode getSize permet juste d'obtenir le bon nombre de fichier test passé (en ne se comptant pas soi-même).
to top


You are here: Linfo > ProjetInfo201213 > ProjetDev2012TestsUnitaire

to top

Copyright © 1999-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback