Archive

You are currently browsing the technique @PMSIpilot blog archives for juin, 2010.

juin

16

Code coverage des tests unitaires d’un projet symfony et intégration dans Hudson CI

By adrien.gallou

Après avoir écrit quelques tests unitaires, on peut se demander si les tests écrits couvrent
une partie assez importante du code de la classe testée, quelles peuvent être les classes restantes à tester ou tout simplement avoir une idée de l’étendue du projet couverte par des tests unitaires.

Pour cela nous utiliseront le plugin Hudson Emma pour l’affichage dans Hudson, ainsi que le plugin symfony agEmmaCoverageReport pour générer le fichier xml au format emma.
Le format « emma » est à la basée utilisé en java, plus d’infos sur le site du projet.

Utilisation de la tache de génération du rapport xml

L’extension xdebug doit être installée (mais pas forcément activée).

Les fichiers testés sont trouvés en utilisant l’autoload, les fichiers de tests doivent être nommés de la façon suivante : nomDeLaClasseTesteeTest.php, par exemple le classe « qualifactCellFormatterEuro » aura pour fichier de test « qualifactCellFormatterEuroTest.php ».

Voyons tout d’abord comment fonctionne la génération du fichier xml de rapport :

Si xdebug est activé par défaut :

./symfony ecr:report --xml=cheminOuSauverLeXml.xml

Mais sur le serveur d’intégration cela n’est probablement pas le cas, et il serait
gênant d’avoir à l’activer pour les autres tests alors que qu’il est seulement utilisé pour le coverage.
Pour cela on peut indiquer à la tache le chemin ou se situe l’extension xdebug (par exemple sur une Mandriva il se situe ici : « /usr/lib/php/extensions/xdebug.so »). La tâche sera alors appelée de cette façon.

./symfony ecr:report --xml=cheminOuSauverLeXml.xml --xdebug-extension-path=/usr/lib/php/extensions/xdebug.so

Intégration dans Hudson CI

Création et configuration du job

  • Dans le menu de gauche : « Nouvelle Tache »
  • Cliquez sur « Construire un projet free-style »
  • Donnez un nom au job
  • Entrez alors l’url du dépôt
  • Après checkout nous voulons lancer les tests unitaires ainsi que la tache créant
  • le rapport de coverage, nous allons donc ajouter une étape au build. Celle ci sera de
    type « Executer un script shell »

  • Dans la liste des commandes nous allons donc lancer les tests et le coverage de cette façon :
  • $WORKSPACE/symfony test:unit --xml=log/unit.xml
    $WORKSPACE/symfony ecr:report --xml=log/coverage.xml

    executer_script

  • Pour les résultats des tests unitaires, cochons la case « Publier le rapport des résultats de tests JUnit » puis dans « XML des rapports de test » nous indiquons ou chercher le fichier XML en saisissant : « log/unit.xml »
  • Pour le code coverage, cochons la case « Record Emma coverage report » puis dans « Folders or files containing Emma XML reports » nous indiquons où chercher le fichier XML en saisissant : « log/coverage.xml »
  • Il faudra ensuite exécuter le job

Affichage du rapport de code coverage

Après lancement du job les résultats du code coverage apparaissent dans la section « Coverage Trend ».

graph

Pour un détail du coverage il faut cliquer sur le graphique.

La couverture du code par les tests unitaire est alors présentée par package ainsi que par classe, méthode, bloc et ligne.

Les blocs sont tous à 0 car c’est une notion seulement utilisée en java. Une méthode ou une classe est couverte si toutes les lignes qui la contiennent sont couvertes. Ainsi certaines classes, ne contenant aucune ligne de code, ayant juste leur déclaration, seront indiquées comme couvertes à 100%.

tableau_floute

juin

10

Les travaux se terminent

By Philippe Ho

4687786416_914e04d07e_b

La rue de Sully va retrouver son calme, les locaux occupent dorénavant 10 fenêtres de large

4687160833_8bba38f4cf_b

Un dernier coup de peinture à la charte de notre suite logicielle

4687163245_96e77c66f2_b

exposer les équipes de développement en plein soleil ? En voilà une idée étrange.

4687791150_2ed14fa7d2_b

Les chaises ergonomiques ont été déballées

4687798280_5ca9bcc447_b

notre équipe support cable les baies

4687155161_6fce6791af_b

Tout va être fin prêt pour mettre le cap sur de nouveaux défis pour la team PMSIPilot

Plus de photos sur Flickr

juin

7

De qui se moque-t’on ?

By Geoffrey

Derrière ce titre un peu faible, se cache un billet qui va, potentiellement, changer votre vie. Pour autant que vous écriviez des tests unitaires (mais tout le monde fait ça ici non ? en tout cas on en fait chez PMSIpilot …). En effet, je vais vous parler d’un truc génial: Mockery. Mockery, c’est un framework de Mock (il parait qu’on dit Bouchon en français, mais c’est vraiment trop ridicule), écrit par Pádraic Brady, qui fait partie de la core team du Zend Framework. Du lourd quoi. Read more »