« SPARQL Protocol and RDF Query Language/Travail pratique/Initiation à PHPUnit » : différence entre les versions

Contenu supprimé Contenu ajouté
Obsolete
Ligne 55 :
 
'''Sous Ubuntu'''
<sourcesyntaxhighlight lang="bash">
sudo apt-get install phpunit php5-curl
sudo pear channel-discover pear.phpunit.de
Ligne 62 :
sudo pear upgrade-all
sudo pear install -f phpunit/PHPUnit
</syntaxhighlight>
</source>
 
'''Sous Fedora'''
{{vérifier}}
<sourcesyntaxhighlight lang="bash">
su -
yum install build-essential phpunit php5-curl
Ligne 74 :
pear upgrade-all
pear install -f phpunit/PHPUnit
</syntaxhighlight>
</source>
 
2. Vérifier la version installée par PHPUnit avec la commande suivante :
<sourcesyntaxhighlight lang="bash">
phpunit --version
</syntaxhighlight>
</source>
 
Ce TP a été fait avec la version 3.5.14. Il devrait être compatible avec toutes les versions 3.5.
Ligne 87 :
 
Installer Phing avec ces commandes :
<sourcesyntaxhighlight lang="bash">
sudo pear channel-discover pear.phing.info
sudo pear install phing/phing
</syntaxhighlight>
</source>
 
Il y a un problème d'encodage de la sortie pour la console d'Eclipse dans le TP suivant. Nous réglons immédiatement le problème.
 
Ouvrir le fichier suivant :
<sourcesyntaxhighlight lang="bash">
sudo vim /usr/bin/phing
</syntaxhighlight>
</source>
 
Remplacer la ligne suivante :
<sourcesyntaxhighlight lang="text">
$PHP_COMMAND -d html_errors=off -qC /usr/share/php/phing.php -logger phing.listener.AnsiColorLogger "$@"
</syntaxhighlight>
</source>
Par cette ligne :
<sourcesyntaxhighlight lang="text">
$PHP_COMMAND -d html_errors=off -qC /usr/share/php/phing.php -logger phing.listener.DefaultLogger "$@"
</syntaxhighlight>
</source>
 
== Développer avec PHPUnit ==
Ligne 158 :
{{solution|contenu=
Voici les commandes à entrer sous Linux pour créer l'arborescence de votre projet moncv :
<sourcesyntaxhighlight lang="bash">
cd ~
mkdir projets
Ligne 168 :
mkdir bdd
mkdir lib
</syntaxhighlight>
</source>
}}
 
Ligne 179 :
# Créer le fichier String.class.php dans le répertoire ~/projets/moncv/src
# Insérer la classe ci-dessous dans ce fichier
<sourcesyntaxhighlight lang="php">
<?php
class String
Ligne 203 :
}
}
</syntaxhighlight>
</source>
 
=== Créer des tests ===
Ligne 217 :
1. Créer dans le répertoire tests du projet la classe String.test.php.<br />
2. Insérer le texte ci-dessous.<br />
<sourcesyntaxhighlight lang="php">
<?php
require_once dirname(__FILE__).'/../src/String.class.php';
Ligne 271 :
}
}
</syntaxhighlight>
</source>
 
=== Créer la suite de tests ===
Ligne 277 :
 
'''Exercice''' : Créer le fichier ClassTest.php dans le répertoire tests, qui contiendra le texte ci-dessous.
<sourcesyntaxhighlight lang="php">
<?php
//require_once 'PHPUnit/Framework.php'; // non existent
Ligne 302 :
}
}
</syntaxhighlight>
</source>
 
Une fois que nos suites de tests sont créées (ici, en réalité, nous n'avons qu'une suite), nous avons une classe pour agréger ces suites et donc tous les tests du projet.
 
'''Exercice''' : Créer le fichier AllTests.php dans le répertoire tests qui contiendra le texte ci-dessous.
<sourcesyntaxhighlight lang="php">
<?php
//require_once 'PHPUnit/Framework.php'; // non existent
Ligne 324 :
}
}
</syntaxhighlight>
</source>
 
On exécute les tests avec la ligne de commande suivante :
 
<sourcesyntaxhighlight lang="bash">
phpunit --colors --verbose tests/AllTests.php
</syntaxhighlight>
</source>
 
Cela nous donne ce résultat :
<sourcesyntaxhighlight lang="text">
FAILURES!
Tests: 3, Assertions: 3, Failures: 3
</syntaxhighlight>
</source>
 
Les tests indiquent qu’ils ont échoué. C'est logique, car la classe String n'a pas encore été implémentée.
Ligne 345 :
 
Pour le moment, il contiendra seulement les lignes suivantes :
<sourcesyntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<project name="MonCV" default="build" basedir=".">
Ligne 373 :
 
</project>
</syntaxhighlight>
</source>
 
 
Ligne 379 :
 
On exécutera maintenant les tests avec la ligne de commande suivante :
<sourcesyntaxhighlight lang="bash">
phing test
</syntaxhighlight>
</source>
 
On peut lancer les tests et le déploiement directement avec cette commande :
<sourcesyntaxhighlight lang="bash">
phing
</syntaxhighlight>
</source>
 
=== Créer le fichier README ===
Ligne 394 :
 
'''Exercice''' : Créer le fichier README à la racine du projet moncv qui contiendra le texte ci-dessous.
<sourcesyntaxhighlight lang="text">
== About ==
TP SPARQL
Ligne 400 :
== Howto TESTS ==
ToDo : phing test
</syntaxhighlight>
</source>
 
=== Implémenter et tester ===
Ligne 406 :
Nous implémentons la classe String.class.php
 
<sourcesyntaxhighlight lang="php" >
<?php
class String
Ligne 435 :
}
}
</syntaxhighlight>
</source>
 
'''Exercice''' : Tester à nouveau le projet avec la commande "phing test" et corriger l'erreur qui se trouve dans la classe String.
{{solution|contenu =
Il y a une erreur ligne 20. Voici la correction :
<sourcesyntaxhighlight lang="php">
$this->data = $this->data.$string->toString("%s");
</syntaxhighlight>
</source>
}}