<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7975374801531630090</id><updated>2024-09-29T01:30:42.595+02:00</updated><title type='text'>Salim CHAMI blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://salimchami.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975374801531630090/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://salimchami.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04615421981468497976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7975374801531630090.post-3797507113573050787</id><published>2012-02-22T23:21:00.000+01:00</published><updated>2012-04-09T22:30:06.551+02:00</updated><title type='text'>Greenpepper 2.9 - Tutorial d&#39;installation et d&#39;utilisation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;http://www.greenpeppersoftware.com/&quot; target=&quot;_blank&quot;&gt;Greenpepper&lt;/a&gt;, commercialisé par la société &lt;a href=&quot;http://pyxis-tech.com/fr/accueil&quot; target=&quot;_blank&quot;&gt;Pyxis
  Technologies Inc., &lt;/a&gt;est un outil de spécifications et de tests
 fonctionnels automatisés. Dans le cas où les développement sont dirigés
 par les tests, il s&#39;agit de l&#39;&lt;a href=&quot;http://en.wikipedia.org/wiki/Acceptance_testing&quot; target=&quot;_blank&quot;&gt;ATDD&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Greenpepper permet donc l&#39;écriture de cas de tests en langage
 simple par la MOA et leur exécution. Ces scénarios peuvent également
 être accompagnés de spécifications puisque l&#39;outil est installé sur un
 wiki. Il peut même être intégré à &lt;a _blank&quot;=&quot;&quot; href=&quot;http://www.atlassian.com/software/jira/overview&quot; target=&quot;_blank&quot;&gt;Jira&lt;/a&gt;
 et &lt;a href=&quot;http://www.eclipse.org/&quot; target=&quot;_blank&quot;&gt;Eclipse&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Je vais tenter dans ce tutorial d&#39;introduire l&#39;ATDD en parlant
 de cet outil assez puissant qui est Greenpepper. Je commencerai par son
 installation pour parler ensuite de son utilisation par la MOA et
 terminer par les différents types de tests que l&#39;on peut écrire et
 exécuter, ainsi que leur implémentation. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.
  Installation de Greenpepper&lt;br /&gt;
2.
  Rédaction des pages de spécification par la MOA&lt;br /&gt;
3.
  Implémentation des fixtures par la MOE&lt;br /&gt;
4. Greenpepper avancé&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;background-color: #9fc5e8;&quot;&gt;





























































































  &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7975374801531630090&quot; name=&quot;section.1&quot;&gt; 1. Installation de Greenpepper&lt;/a&gt;
 &lt;/h2&gt;
&lt;br /&gt;
Dans ce tutoriel, je vais utiliser &lt;a href=&quot;http://www.atlassian.com/fr/software/confluence/overview&quot; target=&quot;_blank&quot;&gt;Confluence&lt;/a&gt; comme base de travail pour utiliser
 Greenpepper. En effet, il est possible de l&#39;installer sur ce wiki et
 disposer de pages de spécifications exécutables. &lt;br /&gt;
Confluence est
 un wiki d&#39;entreprise et il offre une architecture puissante de gestion
 de plugins ce qui nous permettra d&#39;y installer le plugin Greenpepper.&lt;br /&gt;
Ce dernier est disponible également sous forme de plugin à installer
 sur &lt;a href=&quot;http://www.xwiki.com/xwiki/bin/view/Main/&quot; target=&quot;_blank&quot;&gt;XWiki&lt;/a&gt;.
 &lt;br /&gt;
&lt;br /&gt;
L&#39;image suivante présente les différents systèmes sur
 lesquels Greenpepper peut être installé. Nous allons nous intéresser
 dans ce tutoriel à Confluence, Maven et Eclipse. Je vous laisse
 regarder le site pour son utilisation avec les autres systèmes. &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.greenpeppersoftware.com/&quot; target=&quot;_blank&quot;&gt;
  &lt;img src=&quot;http://greenpeppersoftware.com/confluence/download/attachments/158826534/overview.png&quot; /&gt;
 &lt;/a&gt; &lt;br /&gt;
&lt;div&gt;
&amp;nbsp;source &lt;a href=&quot;http://www.greenpeppersoftware.com/&quot; target=&quot;_blank&quot;&gt;Greenpepper
   Software&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































1.1 Téléchargement&lt;/h3&gt;
&lt;br /&gt;
Tout d&#39;abord, le plugin Greenpepper pour Confluence est à
 télécharger à l&#39;adresse suivante : &lt;a href=&quot;http://greenpeppersoftware.com/confluence/display/GPW/Download+Archive&quot; target=&quot;_blank&quot;&gt;http://greenpeppersoftware.com/confluence/display/GPW/Download+Archive&lt;/a&gt;
 &lt;br /&gt;
&lt;br /&gt;
La version que je présente ici est la version 2.9 qui
 est compatible avec la version 3.5.13 du Wiki d&#39;entreprise Confluence.&lt;br /&gt;
A l&#39;heure où j&#39;écris ces lignes, Pyxis tech a sorti une version beta
 stable compatible avec la nouvelle version de Confluence 4. Mais nous
 l&#39;utiliserons pas dans ce tutoriel. &lt;br /&gt;
Je ne détaillerais pas non
 plus l&#39;installation de Confluence. La documentation est assez détaillée
 sur le site dédié à l&#39;adresse suivante : &lt;a href=&quot;http://confluence.atlassian.com/display/DOC/Confluence+Documentation+Home&quot; target=&quot;_blank&quot;&gt;http://confluence.atlassian.com/display/DOC/Confluence+Documentation+Home&lt;/a&gt;.
 &lt;br /&gt;
Sur ce tutoriel, il s&#39;agit de la version 4. Mais la procédure
 d&#39;installation est exactement la même que pour la version 3.5. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































1.2 Installation&lt;/h3&gt;
&lt;br /&gt;
Comme indiqué sur la documentation de Greenpepper, il faut
 installer le fichier&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;greenpepper-confluence-plugin-2.9-complete.jar&lt;/b&gt;
 &lt;/div&gt;
&lt;br /&gt;
en le copiant directement dans le répertoire :&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;.../atlassian/confluence-3.5.13-std/confluence/WEB-INF/lib&lt;/b&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;







































&lt;/h3&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































1.3 Création de l&#39;espace
  &quot;Tutorial Greenpepper&quot;&lt;/h3&gt;
&lt;br /&gt;
&amp;nbsp;Pour utiliser Greenpepper, il est nécessaire de créer un espace
 sur Confluence et de lui appliquer le thème Greenpepper. J&#39;ai appelé
 l&#39;espace utilisé pour ce tutoriel &quot;Tutorial Greenpepper&quot;.&lt;br /&gt;
&lt;br /&gt;
La procédure de création d&#39;un espace sur Confluence est bien détaillée
 sur le &lt;a href=&quot;http://www.greenpeppersoftware.com/confluence/display/GP/Confluence+Space+Setup&quot; target=&quot;_blank&quot;&gt;site de Greenpepper&lt;/a&gt;. Je ne le ferais donc pas
 ici.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































1.4 Configuration&lt;/h3&gt;
&lt;h4&gt;







































&lt;/h4&gt;
&lt;br /&gt;
Une fois le plugin copié dans le répertoire de Confluence, il faut
 aller sur l&#39;espace d&#39;administration de ce dernier et se loguer. Pour y
 accéder, après s&#39;être identifié sur Confluence, cliquez sur le menu en
 haut à droit pour ouvrir l&#39;espace d&#39;administration. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT_E8XMmqsxZ9hxHNexLeSmn86x3AJQdRh0quV5x1UJyqxZoFZL8tV_-q7K1JNhuVBqfGuAv97LstNGNShxBFSXWLlMLAYE-4IntZzUS2PMDNJixu531W5fgxtVLYX1LrGSI1ViJnykzDj/s1600/admin+space.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT_E8XMmqsxZ9hxHNexLeSmn86x3AJQdRh0quV5x1UJyqxZoFZL8tV_-q7K1JNhuVBqfGuAv97LstNGNShxBFSXWLlMLAYE-4IntZzUS2PMDNJixu531W5fgxtVLYX1LrGSI1ViJnykzDj/s1600/admin+space.png&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Entrez votre nom d&#39;utilisateur et votre mot de passe et
 normalement, vous devez atterrir sur la console d&#39;administration. A ce
 stade, nous devons cliquez sur &quot;plugins&quot; sur le menu de gauche pour
 voir apparaître la liste des plugins installés sur Confluence. Dépliez
 le plugin GreenPepper Toolbox, vous y êtes. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs8SNTDo1odMlHsyam57bXDOmzFObBTmPowvac7a0MpZaaUVJh1JzVh5Ry0DMvjlkUnmMCQ0g_1BiM-veE10ii2B5IVGhQZQHnzotm8Yqg067y_8ZUDfCIVl8ggmCRz4fi0-pEPgKAulI6/s1600/confluence+plugins.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs8SNTDo1odMlHsyam57bXDOmzFObBTmPowvac7a0MpZaaUVJh1JzVh5Ry0DMvjlkUnmMCQ0g_1BiM-veE10ii2B5IVGhQZQHnzotm8Yqg067y_8ZUDfCIVl8ggmCRz4fi0-pEPgKAulI6/s640/confluence+plugins.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Maintenant, nous allons configurer le plugin en
 cliquant sur &quot;Configure&quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































1.4.1 Configuration de la
  base de données&lt;/h4&gt;
&lt;br /&gt;
Tout d&#39;abord, il faut créer une base de données sur notre SGBD
 favori que nous appellerons &quot;greenpepperDB&quot;. Une fois la base de
 données créée, il faut dire à Greenpepper où enregistrer ses données.&lt;br /&gt;
Par défaut, la base de données sélectionnée est &quot;HSQL&quot;. Cette base est
 utile lors de l&#39;évaluation de GreenPepper et non sa mise en production.
 Nous allons donc choisir dans la liste déroulante &quot;Custom Install&quot; et
 sélectionner PostgreSQL. C&#39;est la base que j&#39;ai choisi mais vous pouvez
 bien entendu sélectionner une base différente. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9FAEQDDxIfqKalgbKP1aPAkslDM_YFleOcFOZcM5_VvmRrEePHxBF05bLToNXn_y5eIvPhxkpUwg_szojROSEiHSUKhlN9VKBhdwskW_97pRbxlhHRhYHUI-14Y3ZVE5ZnBvfcV4kAsSW/s1600/db+configuration.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9FAEQDDxIfqKalgbKP1aPAkslDM_YFleOcFOZcM5_VvmRrEePHxBF05bLToNXn_y5eIvPhxkpUwg_szojROSEiHSUKhlN9VKBhdwskW_97pRbxlhHRhYHUI-14Y3ZVE5ZnBvfcV4kAsSW/s640/db+configuration.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous remarquerez qu&#39;il faut saisir une ressource JNDI.
 celle-ci est à créer dans le fichier server.xml du serveur tomcat de
 Confluence. &lt;br /&gt;
&lt;div&gt;
&lt;b&gt;.../atlassian/confluence-3.5.13-std/conf/server.xml&lt;/b&gt;
 &lt;/div&gt;
&lt;br /&gt;
Voici le fichier : &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnLOsj48TywJvj1bdHE62_oVU-QHnwBrUt4EOrGEQLkWEiykZQDp02zhKxzHI5ukQOffee_Ad35sOoImd9SauAq1-4w_rvvbmZcv1UJyu1iQo56JANLFMxdxtYBCVQiu5P3lE3jBvKaV1/s1600/serverXML.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;368&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKnLOsj48TywJvj1bdHE62_oVU-QHnwBrUt4EOrGEQLkWEiykZQDp02zhKxzHI5ukQOffee_Ad35sOoImd9SauAq1-4w_rvvbmZcv1UJyu1iQo56JANLFMxdxtYBCVQiu5P3lE3jBvKaV1/s640/serverXML.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir enregistré le fichier server.xml et
 renseigné la ressource JNDI dans l&#39;espace de configuration de la base
 de données, sauvegardez cette configuration en cliquant sur &quot;save&quot;,
 fermez Confluence (ce n&#39;est pas obligatoire) et redémarrez le pour que
 le serveur puisse prendre en compte la nouvelle ressource que nous
 venons d&#39;ajouter. &lt;br /&gt;
&lt;br /&gt;
Si votre serveur est redémarré, allez
 sur l&#39;espace d&#39;aministration de Confluence et retournez sur la page de
 configuration de Greenpepper. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































1.4.2 Saisie de la licence&lt;/h4&gt;
&lt;br /&gt;
Nous allons maintenant saisir notre numéro de licence après
 l&#39;avoir payé bien entendu. Je vous laisse le plaisir d&#39;aller découvrir
 les prix de Greenpepper à l&#39;adresse suivante : &lt;a href=&quot;http://www.greenpeppersoftware.com/confluence/display/GPW/Purchase&quot; target=&quot;_blank&quot;&gt;Acheter Greenpepper&lt;/a&gt; &lt;br /&gt;
Saisissez votre numéro
 de licence et cliquez sur &quot;upload&quot;. Si le numéro est valide, tout va
 bien et cet écran devrait s&#39;afficher.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_gRJk62B4vO2DEZqMOim2SyOPaUXyYVky-B2r7w79MB_tBgwkUslGZu4ZOSFPVJwlbRy3-btbhUi-uKyW3huvTH_d0gZQfMJgfBnPz79x9DMhMghis4klqhyphenhyphenUCaW_QM1a2Snhl5cNlUwD/s1600/licence.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_gRJk62B4vO2DEZqMOim2SyOPaUXyYVky-B2r7w79MB_tBgwkUslGZu4ZOSFPVJwlbRy3-btbhUi-uKyW3huvTH_d0gZQfMJgfBnPz79x9DMhMghis4klqhyphenhyphenUCaW_QM1a2Snhl5cNlUwD/s1600/licence.png&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































1.4.3 Configuration du
  Runner Maven&lt;/h4&gt;
&lt;br /&gt;
Le runner est le moteur d&#39;exécution des fixtures (lien entre
 les pages de tests et leur implémentation). Nous allons nous intéresser
 au &quot;Maven Runner&quot; qui nous permettra de lier le pom.xml de notre projet
 aux pages de spécifications de Greenpepper. Il nous permettra également
 d&#39;exécuter les pages de spécifications directement sur Confluence.&lt;br /&gt;
&lt;br /&gt;
Il est préférable d&#39;utiliser le &quot;Maven Runner&quot; parce que la
 Configuration du moteur d&#39;exécution de vos tests peut être fastidieuse
 si vous avez un nombre important de dépendances. Le Runner Maven vous
 permet d&#39;utiliser votre pom.xml existant pour résoudre les dépendances
 nécessaires à l&#39;exécution de vos tests fonctionnels. Seul l&#39;élément
 &quot;dependencies&quot; du pom.xml est lu. Les artefacts trouvés seront résolus
 et ajouté au classpath du moteur. L&#39;artefact du projet lui-même fera
 également partie du classpath.&lt;br /&gt;
&lt;br /&gt;
Configurons donc le
 Runner. Pour cela, il faut cliquer sur l&#39;onglet &quot;Runner&quot; et choisir
 &quot;Add new runner&quot;.&lt;br /&gt;
Remplissez le formulaire qui s&#39;affiche comme
 suit :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Name : Maven Runner&lt;/li&gt;
&lt;li&gt;Command line :&amp;nbsp; java -cp ${classpaths} ${mainClass}
   ${inputPath} ${outputPath} -l ${locale} -r ${repository} -f
   ${fixtureFactory} --xml --pdd ${projectDependencyDescriptor}&lt;/li&gt;
&lt;li&gt;Main class : com.greenpepper.maven.runner.Main&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;paneGroup&quot;&gt;Environment : JAVA&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&quot;Secured Mode&quot; est prévu pour le &quot;Remote Agent&quot; que nous n&#39;allons pas
 utiliser ici.&lt;br /&gt;
Dans la partie &quot;classpaths&quot;, il faut indiquer le
 chemin des librairies de Maven et le celui du plugin greenpepper pour
 maven.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;.../apache-maven-2.0.9/boot/classworlds-1.1.jar&amp;nbsp;&lt;/li&gt;
&lt;li&gt;.../apache-maven-2.0.9/lib/maven-2.0.9-uber.jar&amp;nbsp;&lt;/li&gt;
&lt;li&gt;.../atlassian/confluence-3.5.13-std/confluence/WEB-INF/lib/greenpepper-maven-runner-2.6-complete.jar&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Vous remarquerez que j&#39;ai utilisé la version 2.0.9 de maven. Ceci est
 dû aux différences entre les librairies de la dernière version de maven
 et celle que j&#39;ai utilisée.&lt;br /&gt;
En exécutant les spécifications avec
 la dernière version, greenpepper ne trouvait pas quelques librairies
 nécessaires à l&#39;exécution des fixtures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A l&#39;issue de
 cette étape, vous devez normalement avoir l&#39;écran suivant :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimz_W4wX3RbuND3g0zbVszkWBzkMFZ3cn8Su02boezIO9bQOQViL2Vt5GYZ1FBEy33bO1mrzI0_qrbhzpGnCEVwYrEDvpVA7JdNZzmwbND3mZGkM5TzsB1BiJ5t8wRauZGGRbZoYb6rOV3/s1600/maven_runner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;329&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimz_W4wX3RbuND3g0zbVszkWBzkMFZ3cn8Su02boezIO9bQOQViL2Vt5GYZ1FBEy33bO1mrzI0_qrbhzpGnCEVwYrEDvpVA7JdNZzmwbND3mZGkM5TzsB1BiJ5t8wRauZGGRbZoYb6rOV3/s640/maven_runner.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
 &lt;/ul&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































1.4.4 Configuration du
  projet Greenpepper&lt;/h4&gt;
&lt;h4&gt;















































































  &lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Passons à l&#39;onglet suivant
   &quot;Project Management&quot;. Nous allons dans cette partie configurer
   l&#39;espace &quot;Tutorial Greenpepper&quot; que nous avons créé au départ.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Pour cela, dans la
   fenêtre qui s&#39;affiche, cliquez sur la liste déroulante &quot;spaces&quot;, puis
   sélectionnez &quot;Tutorial Greenpepper&quot;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Cliquez ensuite sur &quot;edit&quot;
   pour éditer les informations affichées.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;br /&gt;
Dans &quot;&lt;span id=&quot;paneGroup&quot;&gt;GreenPepper Project Name&quot;,
  sélectionnez &quot;new project&quot; pour créer un nouveau projet et saisissez
  un nom pour ce projet.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;Saisissez
  un alias pour le projet dans &quot;&lt;/span&gt;&lt;span id=&quot;paneGroup&quot;&gt;GreenPepper
  Alias&quot;. J&#39;ai choisi ici l&#39;alias &quot;TGrP&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;Saisissez
  ensuite un nom d&#39;utilisateur et un mot de passe. &lt;/span&gt;&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;Pour
  définir le &quot;System Under Test&quot; (système testé) cliquez sur &quot;&lt;/span&gt;&lt;span id=&quot;paneGroup&quot;&gt;&lt;span id=&quot;systemUnderTest_add&quot;&gt;Add a new
   System under test&quot;. Dans le formulaire affiché, saisissez le nom de
   votre SUT, sélectionner Maven_Runner (le nom que vous avez choisi en
   définissant le &quot;Maven Runner&quot;) et dans &quot;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;paneGroup&quot;&gt;Project
  dependency descriptor&quot; saisissez le chemin vers le pom.xml parent de
  votre projet. J&#39;entends par pom parent, le pom au niveau le plus élevé
  de vos projets dans eclipse.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;&lt;br /&gt;Si
  vous avez, par exemple, un projet eclipse pour chaque couche (DAO,
  métier...), vous devez avoir un pom pour chaque projet. Dans ce cas,
  vous devez également avoir un pom parent de ces projets. C&#39;est
  celui-ci qu&#39;il faut renseigner dans &lt;/span&gt;&lt;span id=&quot;paneGroup&quot;&gt;&lt;span id=&quot;systemUnderTest_add&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;paneGroup&quot;&gt;Project
  dependency descriptor&quot;. Pour les besoins du tutorial, je n&#39;ai utilisé
  qu&#39;un projet eclipse.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;Enfin, mettez le chemin complet vers le jar
  généré (en faisant un &quot;mvn clean install&quot;) de votre projet greenpepper
  dans &quot;&lt;/span&gt;&lt;span id=&quot;paneGroup&quot;&gt;Fixtures Classpaths&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;paneGroup&quot;&gt;Une fois tout ceci fait, vous devriez avoir
  l&#39;écran suivant :&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtoiIRkQFqF1rAnVJybU76wuEbnWgCXx3x2dGtSgnbpJI6q5kOntfHC8nI57jF3jHDpOdHIWyKMivhwtX12_qjRQ721U5DPtzoDQV1JPYHwpI5pzSiREJOMTDXQVzdH0a4_ETleiajdfRz/s1600/project_management.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;382&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtoiIRkQFqF1rAnVJybU76wuEbnWgCXx3x2dGtSgnbpJI6q5kOntfHC8nI57jF3jHDpOdHIWyKMivhwtX12_qjRQ721U5DPtzoDQV1JPYHwpI5pzSiREJOMTDXQVzdH0a4_ETleiajdfRz/s640/project_management.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































1.4.5 Installation et
  configuration du plugin Eclipse&lt;/h4&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Le plugin Eclipse est à
   télécharger sur le site de Greenpepper. Concernant l&#39;installation, je
   vous laisse aller voir l&#39;url suivante qui détaille bien les
   différentes étapes : &lt;a href=&quot;http://greenpeppersoftware.com/confluence/display/GPWODOC/1.+Install+GreenPepper+Eclipse+plugin&quot;&gt;http://greenpeppersoftware.com/confluence/display/GPWODOC/1.+Install+GreenPepper+Eclipse+plugin&lt;/a&gt;
  &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Une fois le plugin installé,
   il faut rendre le projet sur Eclipse &quot;Greenpepperized&quot;. Pour cela,
   sélectionner votre projet, cliquer sur Greenpepper sur le menu
   d&#39;Eclipse et activer &quot;Project Greenpepperized&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Ouvrez la vue &quot;Repository
   View&quot; (celle de &quot;Greenpepper&quot;. Oui, elle ne s&#39;appelle pas
   Greenpepper...). Cliquer droit sur votre projet qui vient
   d&#39;apparaître sur cette vue.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Cliquez sur Greenpepper sur
   le menu de gauche pour voir apparaître les paramètres Greenpepper du
   Projet.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Dans la liste déroulante
   &quot;project name&quot;, sélectionner le nom de l&#39;espace Greenpepper que vous
   avez créé sur Confluence.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Sélectionner ensuite le nom
   du &quot;System Under Test&quot; en renseignant par la suite votre login et mot
   de passe dans le tableau en dessous. Renseignez également &quot;Runner
   Directory&quot; en mettant le chemin vers le plugin greenpepper présent
   dans le répertoire lib de Confluence
   (/home/salim/atlassian/confluence-3.5.13-std/confluence/WEB-INF/lib).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Sur le menu de gauche,
   cliquez sur &quot;Advanced Settings&quot;. Si vous utiliser Spring, par
   exemple, dans &quot;class name&quot;, vous devez saisir le nom de la classe
   surchargeant la classe DefaultSystemUnderDevelopment. Nous verrons
   dans la section &quot;Greenpepper Avancé&quot; à la fin de ce tutorial en quoi
   consiste cette surcharge.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;
 &lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Dans &quot;constructor args&quot;,
   vous pouvez éventuellement mettre le chemin relatif vers votre
   context spring (xml).&lt;/span&gt;
 &lt;br /&gt;
&lt;h4&gt;















































  &lt;/h4&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;A ce stade, la configuration
   du plugin Eclipse doit être OK.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;







































 &lt;/h4&gt;
&lt;h4&gt;







































&lt;/h4&gt;
&lt;h2 style=&quot;background-color: #9fc5e8;&quot;&gt;





























































































  &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7975374801531630090&quot; name=&quot;section.2&quot;&gt; 2. Rédaction des pages de spécification par la
   MOA&lt;/a&gt;
 &lt;/h2&gt;
&lt;br /&gt;
Les méthodologies de gestion projet classiques impliquent une gestion
 linéaire de toutes les activités d&#39;un projet. Les premières phases de
 description du besoin sont gourmandes en temps et produisent des
 documents qui sont souvent peu lus ou simplement ignorés par les
 participants. De plus, les besoins sont spécifiés pour une version
 entière et non pour une fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
Ces documents
 sont souvent : &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Les spécifications fonctionnelles générales&lt;/li&gt;
&lt;li&gt;Les spécifications fonctionnelles détaillées&lt;/li&gt;
&lt;li&gt;Les spécifications techniques générales&lt;/li&gt;
&lt;li&gt;Les spécifications techniques détaillées&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Dans les méthodologies agiles, nous parlons de &quot;User stories&quot;.
 Une &lt;b&gt;&quot;user story&quot; &lt;/b&gt;doit définir le &lt;b&gt;rôle&lt;/b&gt;, l&#39;&lt;b&gt;action&lt;/b&gt; et
 l&#39;&lt;b&gt;objectif&lt;/b&gt; à atteindre d&#39;une fonctionnalité du logiciel. De
 plus, sa granularité doit être fine. Plus elle le sera, plus elle sera
 simple à exprimer, à développer et à tester. Je vous propose la lecture
 de cet &lt;a href=&quot;http://www.agilemodeling.com/artifacts/userStory.htm&quot; target=&quot;_blank&quot;&gt;article&lt;/a&gt; sur le principe de &quot;User Story&quot;. &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Une fois les &quot;user stories&quot; définies, la question qui nous
 vient à l&#39;esprit est&amp;nbsp; comment&amp;nbsp; passer du besoin exprimé en
 langage métier (&quot;User Story&quot;) au produit développé avec un langage de
 programmation ?&amp;nbsp;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
L&#39;approche &lt;b&gt;ATTD&lt;/b&gt; (&lt;b&gt;Acceptance Test Driven
  Development&lt;/b&gt;) répond à cette question en permettant d&#39;exprimer un
 besoin métier par des critères de vérification et contrôler la
 concordance entre ce besoin et ce qui est réalisé (Je vous envoie à ces
 articles sur l&#39;&lt;a href=&quot;http://referentiel.institut-agile.fr/atdd.html&quot; target=&quot;_blank&quot;&gt;ATTD&lt;/a&gt; et le &lt;a href=&quot;http://referentiel.institut-agile.fr/bdd.html&quot; target=&quot;_blank&quot;&gt;BDD&lt;/a&gt;).
 &lt;br /&gt;
C&#39;est ce qui va nous amener à parler de Greenpepper.&lt;br /&gt;
&lt;br /&gt;
Cet outil va permettre à la MOA de rédiger les &quot;user stories&quot; du projet
 en langage métier sous forme de tests exécutables.&lt;br /&gt;
C&#39;est là que
 ça devient intéressant !&lt;br /&gt;
Puisque ce sont des spécifications
 exécutables, le besoin exprimé sous forme de test sera implémenté par
 la MOE. Il représente donc l&#39;état de l&#39;application à un moment donné et
 permet de mesurer réellement la réponse au besoin.&lt;br /&gt;
Cette documentation du logiciel n&#39;est donc jamais obsolète car elle est &quot;branchée&quot; à l&#39;application. &lt;br /&gt;
&lt;br /&gt;
Tout
 d&#39;abord, Greenpepper peut être installé sur un Wiki d&#39;entreprise. La
 MOA peut donc créer un espace de spécifications et y mettre toutes les
 user stories classées par domaine.&lt;br /&gt;
&lt;br /&gt;
Prenons un exemple...&lt;br /&gt;
&lt;br /&gt;
Pour le service RH d&#39;une entreprise, la MOA veut créer un
 logiciel de gestion des salaires et de la formation des salariés. Nous allons
 donc créer une &quot;page d&#39;accueil&quot; sur notre espace Greenpepper sur
 Confluence qui s&#39;appellera &quot;Gestion des ressources humaines&quot; qui contiendra ces fonctionnalités. Cette page peut
 contenir la description du projet mais sans trop détailler le besoin ni
 les fonctionnalités. &lt;br /&gt;
&lt;br /&gt;
Après avoir rédigé cette page
 d&#39;accueil, nous devons créer autant de pages que de fonctionnalités
 classées par domaine.&lt;br /&gt;
&lt;br /&gt;
Imaginons qu&#39;on ai les domaines &quot;Salaires&quot;
 et &quot;Formation&quot;. Chaque page correspondant à un domaine
 comportera la description de celui-ci. Il n&#39;est pas nécessaire de
 mettre cette description dans la page d&#39;accueil.&lt;br /&gt;
&lt;br /&gt;
Une fois les
 pages de domaines créées, créons les pages de fonctionnalités de chaque
 domaine.&lt;br /&gt;
&lt;br /&gt;
Domaine &quot;Salaires&quot; :&amp;nbsp; &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Calcul des Salaires&lt;/li&gt;
&lt;li&gt;Gestion des augmentations&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
Domaine &quot;Formation&quot; :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Inscrire un salarié à une formation&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;







































&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































2.1 Structure des pages
  Greenpepper sur Confluence&lt;/h3&gt;
&lt;br /&gt;
Après avoir créé une page sur Confluence dans un espace&amp;nbsp;ayant pour
 thème Greenpepper, il est possible de l&#39;éditer.&amp;nbsp; Il existe deux
 modes d&#39;édition d&#39;une page :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Rich text :&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
Ce mode est le mode classique mettant à disposition de l&#39;utilisateur un
 éditeur de texte assez simpliste mais qui permet néanmoins d&#39;ajouter
 tous types d&#39;éléments (texte, liens, images...).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jrd7Lj079CAJNF3zmXc8_-rJI3-dnDLqcI3nwQoLt0RpEMYxvxH-0dlSB_xXjL69CDD5SoEfurQ_9dUblhxInSrbFElsQhA_Ne2vKfqrPrmmM4efSHkIAzDK8oZag8cr_XDunQ8LreLK/s1600/rich_text.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jrd7Lj079CAJNF3zmXc8_-rJI3-dnDLqcI3nwQoLt0RpEMYxvxH-0dlSB_xXjL69CDD5SoEfurQ_9dUblhxInSrbFElsQhA_Ne2vKfqrPrmmM4efSHkIAzDK8oZag8cr_XDunQ8LreLK/s640/rich_text.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Wiki mode :&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
C&#39;est un mode d&#39;édition avancé permettant l&#39;écriture des pages avec un
 langage spécifique. Il est préférable de créer les pages en mode &quot;Rich
 Text&quot; et de les éditer en mode &quot;Wiki&quot; si elles contiennent des erreurs
 après leur enregistrement.&lt;br /&gt;
&lt;br /&gt;
Voici la même page que nous
 avons crée ci-dessus en mode Wiki :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GnmFOoJLgSKyYGQfgkxpxlyXLb9x8M3zPppeaMAAX9GlhpL3nwp2repGRc6CTm1XDkqg62izIpeTR2FOugk-0Q-Wxo1PXLo4HYi4D7_s00HuD1GAcN40CyBGzz0IhP0NUixUz5_Pm1Nh/s1600/mode_wiki.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9GnmFOoJLgSKyYGQfgkxpxlyXLb9x8M3zPppeaMAAX9GlhpL3nwp2repGRc6CTm1XDkqg62izIpeTR2FOugk-0Q-Wxo1PXLo4HYi4D7_s00HuD1GAcN40CyBGzz0IhP0NUixUz5_Pm1Nh/s640/mode_wiki.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Attention !&lt;/b&gt; En enregistrant la page, il est
 possible que le mode &quot;Rich text&quot; rajoute des caractères au texte que
 vous avez saisi.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
Pour créer un
 tableau en mode &quot;Rich Text&quot;, il faut cliquer sur &quot;Insert table&quot; et
 saisir les valeurs, couleurs... voulues. &lt;br /&gt;
Par contre en mode
 &quot;Wiki&quot;, le tableau se présente sous cette forme :
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
|| colonne1&amp;nbsp; || colonne2 || colonne3 ||&lt;br /&gt;
| valeur | valeur |
 valeur |&lt;br /&gt;
| valeur | valeur | valeur |&lt;br /&gt;
| valeur | valeur |
 valeur |
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Après
 avoir enregistré la page en mode &quot;Rich Text&quot;, si nous l&#39;ouvrons en mode
 &quot;Wiki&quot;, il est possible de constater que les caractères &quot;\&quot; ont étés
 ajouté dans chaque cellule du tableau, ce qui peut fausser les valeurs
 attendues par le test.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Exemple :&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot;&gt;
||\colonne1\ ||\colonne2\||\colonne3\||&lt;br /&gt;
|\valeur\|\valeur\|\valeur\|&lt;br /&gt;
|\valeur\|\valeur\|\valeur\|&lt;br /&gt;
|\valeur\|\valeur\|\valeur\|
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Il suffit alors d&#39;éditer la page en mode &quot;Wiki&quot; et
  de supprimer ces caractères.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































2.2 Description générale du
  projet&lt;/h3&gt;
&lt;br /&gt;
&lt;div style=&quot;font-weight: normal;&quot;&gt;
Pour introduire le projet, nous
  allons créer la page d&#39;accueil du projet directement dans l&#39;espace
  &quot;Tutorial Greenpepper&quot; (cf. 2.1 Structure des pages Greenpepper sur
  Confluence) et ajouter un paragraphe de description. Il est également
  possible d&#39;ajouter à cette page toute sorte de graphes, modèles,
  description de la société etc.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-weight: normal;&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvBEM9iOUauIIBzpmwwcoX4olTKOKXBfc28teIA9LELGJANuFaJDMu-ZniaFksOf0Gm1den7V-Fn5hEs-xCul1zHhbP_WVpoJYqhpTdmd4nLTmC-10-cEO2JeiUcYCVt0mCpywhi5UlNsY/s1600/pageacceuil.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;488&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvBEM9iOUauIIBzpmwwcoX4olTKOKXBfc28teIA9LELGJANuFaJDMu-ZniaFksOf0Gm1den7V-Fn5hEs-xCul1zHhbP_WVpoJYqhpTdmd4nLTmC-10-cEO2JeiUcYCVt0mCpywhi5UlNsY/s640/pageacceuil.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
  &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #cfe2f3; font-weight: normal;&quot;&gt;
&lt;h3&gt;







































2.3 Domaines fonctionnels du projet&lt;/h3&gt;
&lt;/div&gt;
&lt;br /&gt;
Depuis la page d&#39;accueil, créons une page pour chaque domaine
 fonctionnel du projet.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Domaine &quot;Salaires&quot;&lt;/li&gt;
&lt;li&gt;Domaine &quot;Gestion des compétences&quot;&lt;/li&gt;
&lt;/ul&gt;
Comme pour la page d&#39;accueil, il est possible d&#39;y ajouter tout élément
 permettant la description du domaine. &lt;b style=&quot;color: red;&quot;&gt;Cette
  description fait office de spécifications.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































2.4 Fonctionnalités métier
 &lt;/h3&gt;
&lt;br /&gt;
Une page doit être créée pour chaque fonctionnalité du domaine. Ce sera
 bien entendu, une page fille du domaine concerné, &lt;b style=&quot;color: red;&quot;&gt;contenant elle-même des spécifications &lt;/b&gt;(paragraphes
 décrivant la fonctionnalité + captures d&#39;écran
 éventuellement...).&amp;nbsp;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































2.5 Scénarios&lt;/h3&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Chaque fonctionnalité peut avoir plusieurs scénarios. Et bien, vous
 l&#39;aurez deviné, depuis la page de la fonctionnalité, il faut créer une
 sous page pour chaque scénario et ajouter éventuellement &lt;b style=&quot;color: red;&quot;&gt;les spécifications correspondantes&lt;/b&gt;.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
A ce
 stade, nous obtenons une arborescence que l&#39;on peut visualiser en
 cliquant sur Browse&amp;gt;Pages sur le menu en haut à droite.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Après
 avoir cliqué sur Pages, il est possible de choisir le type d&#39;affichage
 des pages selon trois modes :&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Recently Updated | Alphabetical | &lt;span style=&quot;background-color: #f0f0f0; padding: 5px;&quot;&gt;&lt;b&gt;Tree&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Si l&#39;on choisi le mode &lt;i&gt;Tree&lt;/i&gt;, nous obtenons
 l&#39;arborescence des spécifications du projet.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyELK7BPiBfTSH8__YpDPUMEYuYb5ZgNBdMUEf1Cc-W0ntTKqyVzFmPBQBknvYUUW3F_4p3l-ANx7_vSEmOM31H4XNcWXUWajGztmB-Uq2-WlFJAz4od7kura1__rPhltWDT-Tr2b5lV9r/s1600/arbo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyELK7BPiBfTSH8__YpDPUMEYuYb5ZgNBdMUEf1Cc-W0ntTKqyVzFmPBQBknvYUUW3F_4p3l-ANx7_vSEmOM31H4XNcWXUWajGztmB-Uq2-WlFJAz4od7kura1__rPhltWDT-Tr2b5lV9r/s640/arbo.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































2.6 Écriture des tests&lt;/h3&gt;
&lt;br /&gt;
Pour chaque test, il existe trois étapes :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Phase d&#39;&lt;b&gt;initialisation&lt;/b&gt; : Cette étape permet
   l&#39;initialisation du contexte&amp;nbsp; du test fonctionnel. Elle permet
   l&#39;initialisation des données utilises à notre test. Par exemple, pour
   ajouter un salarié à une formation, il faut que le salarié et la
   formation existent.
  &lt;/li&gt;
&lt;li&gt;Phase d&#39;&lt;b&gt;action&lt;/b&gt; : Phase permettant d&#39;exécuter l&#39;action
   testée
  &lt;/li&gt;
&lt;li&gt;Phase de &lt;b&gt;vérification&lt;/b&gt; des résultats retournés par la
   phase précédente (résultats du test)
  &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Passons à l&#39;écriture des tests. Nous allons en écrire un pour
 le scénario &quot;Scénario 1&quot;.&lt;br /&gt;
Imaginons que ce soit le scénario
 classique d&#39;ajout d&#39;un salarié à une formation existante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































2.6.1 Phase
  d&#39;initialisation&lt;/h4&gt;
&lt;br /&gt;
Nous n&#39;allons pas initialiser le contexte directement sur la page du
 scénario mais créer au même niveau que les pages de domaines
 fonctionnels, une rubrique &quot;setup&quot; dans laquelle nous mettrons toutes
 les pages d&#39;initialisation et que nous inclurons dans les tests qui en
 ont besoin à l&#39;aide de l&#39;outil &quot;insert macro&quot; de l&#39;éditeur de texte.&lt;br /&gt;
La page d&#39;initialisation n&#39;est pas écrite directement sur la page du
 scénario car nous pouvons en avoir besoin dans une autre page. Pour
 cela, une fois créée sur une page indépendante, il est possible de
 l&#39;inclure tout simplement, à chaque fois que nous en avons besoin.
 &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ouvrez la page du projet &quot;Gestion des
 ressources humaines&quot; et créez une page &quot;setup&quot; dans laquelle il faut
 créer deux sous-pages &quot;setup Salariés&quot; et &quot;setup Formations&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Page d&#39;initialisation des salariés &quot;setup Salariés&quot; :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAs9qWdZ09qNT_g9RuSxTewwFWB64W5O7ftrcO8W9qCg52XgRgw3tEZ6MBvpe4E3gxQ57CDm8JspHxZOW4Tvv-k10exGSZGFVN-_M1__daJFZ74cYIysNkeyOpRZg9P4TpA5OnzivE3qo3/s1600/setupsalaries.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAs9qWdZ09qNT_g9RuSxTewwFWB64W5O7ftrcO8W9qCg52XgRgw3tEZ6MBvpe4E3gxQ57CDm8JspHxZOW4Tvv-k10exGSZGFVN-_M1__daJFZ74cYIysNkeyOpRZg9P4TpA5OnzivE3qo3/s640/setupsalaries.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Page d&#39;initialisation des salariés &quot;setup Formations&quot; :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0byQqpeg6Jeg5FbRCV5LvW04ct0beM5-o0gbyS3Jwgxc4aTFxnU8JznxTWINhF9fr_4Gx_QfuENKDJ5GaerwFttDA-pJbvAeho-lB6ewT30CXLNtUAfeXEbXn2DeqjFXxiyGuVuZvi_Eb/s1600/setupformations.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;188&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0byQqpeg6Jeg5FbRCV5LvW04ct0beM5-o0gbyS3Jwgxc4aTFxnU8JznxTWINhF9fr_4Gx_QfuENKDJ5GaerwFttDA-pJbvAeho-lB6ewT30CXLNtUAfeXEbXn2DeqjFXxiyGuVuZvi_Eb/s640/setupformations.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Les entêtes des deux premières colonnes contiennent le
 type (&quot;setup&quot; en &lt;b&gt;minuscule&lt;/b&gt;) et le nom de la &lt;i&gt;&lt;b&gt;fixture*&lt;/b&gt;&lt;/i&gt;
 d&#39;initialisation (&quot;SetupSalaries&quot; et &quot;SetupFormations&quot; en &lt;b&gt;CamelCase
  sans accents&lt;/b&gt;).&lt;br /&gt;
Le nom des colonnes ne doit pas contenir
 d&#39;accents ni d&#39;espaces.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
* Une fixture représente
 la structure de notre test. En créant une fixture vous définissez
 comment la table est composée (quels champs font partie de la table) et
 quels enregistrements seront remplis dans la table de test. &lt;br /&gt;
&lt;br /&gt;
A ce stade notre arborescence se présente comme suit :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXv4rvdpncmkHBxaC_-ZreIonTDMWR3-BHpHc49ytsfpZlZCfC09biQv41NpiC5ATBiaJvgb7-lHx_lwsbbsRAdDnaHCbLTRKEcVYPTH1bNJEWUoqfGq5M-vubCvtuDLh4FALwUZPWnohj/s1600/arbo2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXv4rvdpncmkHBxaC_-ZreIonTDMWR3-BHpHc49ytsfpZlZCfC09biQv41NpiC5ATBiaJvgb7-lHx_lwsbbsRAdDnaHCbLTRKEcVYPTH1bNJEWUoqfGq5M-vubCvtuDLh4FALwUZPWnohj/s1600/arbo2.png&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le tableau d&#39;initialisation terminé, ajoutez
 une autre page d&#39;initialisation des formations et retournez sur la page
 d&#39;édition de notre scénario. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;







































2.6.2 Types de tests&lt;/h4&gt;
&lt;br /&gt;
Pour le besoin du tutorial, j&#39;ai crée autant de sous page de la page
 &quot;Scénario 1&quot; que de types de tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;





















































  2.6.2.1 &lt;i&gt;DoWith&lt;/i&gt;
 &lt;/h4&gt;
&lt;br /&gt;
Ce type de test permet l&#39;exécution d&#39;une action.&lt;br /&gt;
Outre le type
 du test et le nom de la fixture, il faut ajouter un mot clé au début de
 chaque test :&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;confluenceTable&quot; style=&quot;margin-left: 0px; margin-right: 0px; text-align: left;&quot;&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;th class=&quot;confluenceTh&quot;&gt;Accept&lt;/th&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;Confirme que l&#39;action a bien été
     exécutée par le système testé.&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
   &lt;/tr&gt;
&lt;tr&gt;
    &lt;th class=&quot;confluenceTh&quot;&gt;Check&lt;/th&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;Vérifie si la valeur attendue est bien
     égale à celle retournée par le système testé.&lt;/td&gt;
   &lt;/tr&gt;
&lt;tr&gt;
    &lt;th class=&quot;confluenceTh&quot;&gt;Reject&lt;/th&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;L&#39;action doit être rejetée par le
     système testé.&lt;/td&gt;
   &lt;/tr&gt;
&lt;tr&gt;
    &lt;th class=&quot;confluenceTh&quot;&gt;Display&lt;/th&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;Affiche une valeur retournée par le
     système testé.&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
    &lt;td class=&quot;confluenceTd&quot;&gt;&lt;br /&gt;&lt;/td&gt;
   &lt;/tr&gt;
&lt;/tbody&gt;
 &lt;/table&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
Si nous avons la liste des
  employés et celle des formations que nous voulons enregistrer Marie
  Dupont à la formation Greenpepper nous allons écrire cette fixture :&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitLBPVuynUdZwmBW-vri6ufDwzwizVmcV1QSjkobVRWWirW6O1JrcpLdJ3inVAzo_ZsauPYELtl7OWW8Ou0g2obbPZVPfoH9LAlVgUNWqZ0X770u7iMyj3ZhSOjjxz__2BhaQjzpOLgJJE/s1600/dowith.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitLBPVuynUdZwmBW-vri6ufDwzwizVmcV1QSjkobVRWWirW6O1JrcpLdJ3inVAzo_ZsauPYELtl7OWW8Ou0g2obbPZVPfoH9LAlVgUNWqZ0X770u7iMyj3ZhSOjjxz__2BhaQjzpOLgJJE/s1600/dowith.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOUSMn-djt6tMgyo-pY-mQqo-XjG5uAXtDONdHrtHmtGpXfv_oZK63DiEJLgWNCWep5A7j09enrBarwGUebdKxoBID0V7Af-rAYX_METqLF2nU3rEZBnERf2Jtr2L35S9NxdXPVGatxLUC/s1600/dowith.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2hjxOmsi6e_FKBVcZJ2dnQ21LplYeRiYESQTDRZqv1fRDeV1xhiyPSK-vsZPXR9YDbU3BBma_efZmbdOluRd8paSuGjmO7VXoZtgNziDFGCaeMjiMuFM070w_b8AQ48BYu8wckppHxP5m/s1600/dowith.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgsjMdzJsMsJxm3c4TvjI-G9__Wtp0B2qXWo6SkpkcwkVfxJe5_8qJZ7kQwmV2j9SUvQ-1EaQCkLWp0p6g7_1ywVs0-IbkPy-YkvAzM_mpQR_H_UejWk-IAd0vDnmOVjeiDUILGhL2XVKb/s1600/dowith.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFktEWHmesw0qI0TtUXbVTqAKhX0lMux-pGexa-g32KG5kOZh8xgoMk0OkwPYmow6UlIzCQ_rlrolXgvgQU4koFMU67h3oEbD_0NMP-GNVaewS-rtb7zuBU0R4HU_ROg7y2bHsAktvTXDI/s1600/dowith.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;
Là, je vous dois une
  explication...&lt;br /&gt;
&lt;br /&gt;
Tout d&#39;abord, il faut inclure les setup que nous avons créé précédemment à l&#39;aide de l&#39;outil d&#39;insertion de macro ou en mode wiki à l&#39;aide de la commande : {greenpepper-include:pageTitle=setup Salariés}. Cette commande permet d&#39;inclure une page créée précédemment.&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
Pour ce type de test, les
  entêtes ne changent pas par rapport aux tableaux d&#39;initialisation
  (type de test, nom de la fixture).&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
Vous avez dû remarqué qu&#39;il
  n&#39;y a pas de colonne. Par contre, j&#39;ai ajouté une
  ligne représentant l&#39;action à exécuter par le système testé.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
Il faut pour le DoWith,
  mettre en premier le mot-clé qui va définir quel type de test nous
  écrivons, et alternativement une partie de la phrase qui définit le
  contexte de l&#39;action réalisée (le comment) et un paramètre (le quoi ou
  le qui).&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
| Mot clé | comment | quoi
  ou qui | comment | quoi ou qui | ... |&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;
 &lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;b&gt;&lt;u&gt;&lt;i&gt;Remarque importante :&lt;/i&gt;&lt;/u&gt;&lt;/b&gt; Ce type de test ne teste
  pas le résultat retourné par l&#39;action réalisée par le système testé
  mais définit cette action. Autrement dit, je dis simplement au système
  de réaliser une action particulière (exemple : inscrire Marie Dupont à
  la formation Greenpepper).&amp;nbsp;
 &lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Remarque : Nous ne pouvons pas encore exécuter le test
 puisqu&#39;il n&#39;a pas encore été implémenté par la MOE. Une fois implémenté, il est possible de l&#39;exécuter directement sur Confluence.&lt;br /&gt;
&lt;br /&gt;
Le résultat de l&#39;exécution se présente comme suit :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAUWWpd7nVqQdzTH2abzGU9MHa4CLs5OnE76I2nrumpTFUU3Ic3MSxZ3jhBnJZuKSxeS6zUp5IR94ZZ36l36ocu63taNu_hXkuIKonIo4YWHKXJdIQs-DRu4QbFVwb6hHD3B8bMT7xiR2/s1600/dowithtestok.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAUWWpd7nVqQdzTH2abzGU9MHa4CLs5OnE76I2nrumpTFUU3Ic3MSxZ3jhBnJZuKSxeS6zUp5IR94ZZ36l36ocu63taNu_hXkuIKonIo4YWHKXJdIQs-DRu4QbFVwb6hHD3B8bMT7xiR2/s1600/dowithtestok.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitLBPVuynUdZwmBW-vri6ufDwzwizVmcV1QSjkobVRWWirW6O1JrcpLdJ3inVAzo_ZsauPYELtl7OWW8Ou0g2obbPZVPfoH9LAlVgUNWqZ0X770u7iMyj3ZhSOjjxz__2BhaQjzpOLgJJE/s1600/dowith.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw7Y8h6NfXdHDG17OBFWLBpGUUl0d5MaKrZFOkyxa4jEAhvX_46ctZEPc-HsWeXUihZearTfqx7jZdeB1JifCFS9E6e6sYloOYdUHaQ81fLC2K1Xb6i85AX-QcP4awsO63TCRwnQMtYPKv/s1600/dowithtestok.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx8v7zIXs9qp_9d5lGy-zcbH_5qzJzMaSP08DV8PlBU3JpmXKfrm6UJVv8WfOmjgkjNVIRxrX6GFxRiVUCtSE60pYXdKmbFewjg5dv9Gftgrl3HPNkDJ_2lUZbZUfccht0S4TLGNyQHISc/s1600/dowithtestok.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Après exécution du test, Greenpepper surligne les cellules contenant le résultat attendu et affiche un compte rendu en haut à droite de la page contenant le nombre de tests OK, le nombre de tests qui ont échoués et celui en erreur. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;





















































  &amp;nbsp;2.6.2.1 &lt;i&gt;Set of&lt;/i&gt; et &lt;i&gt;List of&lt;/i&gt;
 &lt;/h4&gt;
&lt;br /&gt;
Ces types de test permettent d&#39;écrire un tableau dans lequel
 nous pouvons mettre les valeurs attendues.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Set
   of &lt;/b&gt;&lt;/i&gt;: liste non triée&lt;br /&gt;
&lt;b&gt;&lt;i&gt;List of &lt;/i&gt;&lt;/b&gt;: liste triée&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par exemple, si l&#39;action du test est
 l&#39;inscription de la salariée Marie Dupont à la formation Greenpepper,
 nous pouvons utiliser le type de test DoWith pour réaliser l&#39;inscription et
 vérifier cette inscription à l&#39;aide d&#39;un tableau Set of ou List of. Ce type de tableau retourne &lt;b&gt;tous&lt;/b&gt; les enregistrements présents dans la base de données et non une partie des salariés inscrits à des formations par exemple. &lt;br /&gt;
&lt;br /&gt;
Dans ce type de tableau, nous allons donc retrouver la liste des salariés avec le libellé des formations auxquelles il sont inscrits. &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Nous pouvons écrire le test de la manière
 suivante :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeeqbmGq6vApoQjrNOkWUGEbgtXqolfz7WwFBTZJuqnUk1IVIhe2r0ECaBnXbUZjBHWIVkatKw9rXyNgUeV0u_voK2Hudko6EG9vH5sSOXs3MFu2nvIbAoLBo2QWlU0PDZtNC5Kdvpw_ZT/s1600/listofsetof.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeeqbmGq6vApoQjrNOkWUGEbgtXqolfz7WwFBTZJuqnUk1IVIhe2r0ECaBnXbUZjBHWIVkatKw9rXyNgUeV0u_voK2Hudko6EG9vH5sSOXs3MFu2nvIbAoLBo2QWlU0PDZtNC5Kdvpw_ZT/s1600/listofsetof.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzpIcDPW8icvbZ2lBjILvHVKttjPuf5Sk0X9qto1yzfPI20txGlKmJEOM0GYrGRS9HYaxB58YnfYPORUh1iinpQeurJAzb8FF_WwM3X9WgRHW1xrHKLC12Pxd4pkeIYhDfK6SP6n7YT24T/s1600/listofsetof.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzpIcDPW8icvbZ2lBjILvHVKttjPuf5Sk0X9qto1yzfPI20txGlKmJEOM0GYrGRS9HYaxB58YnfYPORUh1iinpQeurJAzb8FF_WwM3X9WgRHW1xrHKLC12Pxd4pkeIYhDfK6SP6n7YT24T/s1600/listofsetof.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Ce test signifie que l&#39;on s&#39;attend à retrouver Marie
 Dupont inscrite à la formation Greenpepper et Pierre Dupont à la
 formation agile.&lt;br /&gt;
&lt;br /&gt;
Une fois le test implémenté, voici comment il se présente après exécution :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioQzaYnL3MPVMVZ8N4CP9NBjvLKPm-9tV_tcCojL4zukgtymR0SIxxmFOCVpPwMj0AurfBVPjfSmTD2alnX3moG-viwoR7INxTMAYKxTFV5EkD1Y_J07V6uCqmp7Y5assSKxe4P8yI-y0X/s1600/listofsetoftestok.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;488&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioQzaYnL3MPVMVZ8N4CP9NBjvLKPm-9tV_tcCojL4zukgtymR0SIxxmFOCVpPwMj0AurfBVPjfSmTD2alnX3moG-viwoR7INxTMAYKxTFV5EkD1Y_J07V6uCqmp7Y5assSKxe4P8yI-y0X/s640/listofsetoftestok.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;






















































  2.6.2.2 &lt;i&gt;Rule for&lt;/i&gt;
 &lt;/h4&gt;
&lt;br /&gt;
Ce type de test permet d&#39;exprimer le test sous forme de question.&lt;br /&gt;
Est-ce que Marie Dupont est inscrite à la formation Greenpepper ?&lt;br /&gt;
Les premières colonnes représentent les paramètres d&#39;exécution du test.&lt;br /&gt;
La ou les colonnes portant un &quot;?&quot;, représentent le résultat attendu. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcg0sgQP985EFeCWlTflUBIOLAXjSP_CuISkE9jtqlpZ779lQz8CqEi_I4sXBgW96K2N32Nf_4AQVOTeLaTGSa4TgeIGYS5d9R-oo7FU5QM2n6FxlJSXUVzGiq4g-QYzB5YSLq_0pnK9db/s1600/rulefor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;392&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcg0sgQP985EFeCWlTflUBIOLAXjSP_CuISkE9jtqlpZ779lQz8CqEi_I4sXBgW96K2N32Nf_4AQVOTeLaTGSa4TgeIGYS5d9R-oo7FU5QM2n6FxlJSXUVzGiq4g-QYzB5YSLq_0pnK9db/s640/rulefor.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1UvdNncM17Jsaib6YEid3sgBHYFePFMFolpXOxEozVCwq6SjX_89lu5mVzv7gvPqwTEs4q_1moAUQEM6GvGCIeT1sj2GewYgPdHPNi8WVvXq9CXMb5KnHsfBWoOqviZh9yLcgoaf_2fQb/s1600/rulefor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1UvdNncM17Jsaib6YEid3sgBHYFePFMFolpXOxEozVCwq6SjX_89lu5mVzv7gvPqwTEs4q_1moAUQEM6GvGCIeT1sj2GewYgPdHPNi8WVvXq9CXMb5KnHsfBWoOqviZh9yLcgoaf_2fQb/s1600/rulefor.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;h4 style=&quot;background-color: #d0e0e3;&quot;&gt;


















































  2.6.2.2 &lt;i&gt;Scenario&lt;/i&gt;
 &lt;/h4&gt;
&lt;br /&gt;
Le type de test scénario permet de &quot;libérer&quot; le rédacteur du test des
 contraintes des autres types de test.&lt;br /&gt;
Il permet l&#39;écriture du
 test en langage naturel mais sans accents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj2BAz7_jJF-wr9-xA62SpLtsEs_d6hv6U6NtQOj8W9L1f4B6x3Y07x4CP7SqXOUbvHneyyb6gEmGkjNMPjww6xgJbsjCJOLk8MuIwnsPGeM2SaS3rEjbSrPg5UHL-R1WuAFRd-SzSwXWi/s1600/scenariotest.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;340&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj2BAz7_jJF-wr9-xA62SpLtsEs_d6hv6U6NtQOj8W9L1f4B6x3Y07x4CP7SqXOUbvHneyyb6gEmGkjNMPjww6xgJbsjCJOLk8MuIwnsPGeM2SaS3rEjbSrPg5UHL-R1WuAFRd-SzSwXWi/s640/scenariotest.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;
 &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
Une fois que les
  spécifications exécutables sont rédigées, l&#39;équipe technique peut commencer
  à développer les fonctionnalités demandées et les fixtures (tests)
  correspondantes.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
Il est important que
  les tests fonctionnels soient rédigés avant le début développement des
  fonctionnalités (cf. BDD, ATTD).&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
Une fois que le
  développement est terminé, il est possible d&#39;exécuter ces tests
  directement sur la page que vous avez rédigé en cliquant sur le bouton
  &quot;Execute&quot;. Il n&#39;apparaît pas sur les captures d&#39;écran ci-dessus car il faut cocher &quot;Greenpepperized&quot; pour rendre le test exécutable.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;background-color: #9fc5e8;&quot;&gt;

















































  &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7975374801531630090&quot; name=&quot;section.2&quot;&gt;3. Implémentation des fixtures par la MOE&lt;/a&gt;
 &lt;/h2&gt;
&lt;br /&gt;
Nous allons maintenant implémenter les fixtures rédigées par la
 MOA (cf. ci-haut).&lt;br /&gt;
&lt;br /&gt;
Tout d&#39;abord, je considère que
 l&#39;application est déjà initialisée (couche d&#39;accès aux données, couche
 métier...).&lt;br /&gt;
&lt;br /&gt;
Pour qu&#39;une page de spécifications soit
 exécutable, il faut cocher &lt;span class=&quot;conf_greenTitle&quot;&gt;&quot;Green&lt;/span&gt;&lt;span class=&quot;conf_pepperTitle&quot;&gt;Pepperized&quot; sur cette page sur
  Confluence. Elle apparaîtra ensuite comme une spécification exécutable
  sur Eclipse.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;color: red;&quot;&gt;/!\
  Remarque importante /!\ :&lt;/b&gt; Il est à noter que lors de l&#39;implémentation
 des fixtures, la couche testée est la couche métier. Pour toutes les
 actions, tests effectués, ce sont les &quot;services&quot; de la couche métier
 qui sont appelés, excepté pour les setup des fixtures où il est
 possible d&#39;appeler les DAO pour initialiser les données. &lt;br /&gt;
Par
 ailleurs, Greenpepper ne teste pas la couche de présentation. Il existe
 d&#39;autres outils pour cela tel que &lt;a href=&quot;http://seleniumhq.org/&quot; target=&quot;_blank&quot;&gt;Selenium&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































3.1 Implémentation des
  setup&lt;/h3&gt;
&lt;br /&gt;
Le plugin Greenpepper d&#39;Eclipse permet la génération des fixtures avec
 le code par défaut pour leur implémentation.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Pour cela, ouvrez la vue &quot;Repository view&quot;. Sur l&#39;arborescence des
 fixtures, allez à la section setup et cliquer droit que le setup &quot;Setup
 Formations&quot;.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Activer tout d&#39;abord &quot;Switch to Working Copy&quot;. Ceci a pour effet le
 téléchargement systématique depuis Confluence de la fixture avant son
 exécution. Ensuite, cliquer sur &quot;Create fixture&quot;.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Sur la fenêtre qui apparaît, choisissez le package dans lequel vous
 voulez créer votre fixture.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdbY-tXbv5QyL9DVDbC1FaVRfatCKqJniuGvaJoAKtgeL1mtrxIbKGp5WQ9mXpQ4KXDUIz0pt2UzmY2ifzLWCknnNzCEioZBwyP4M_0GVt7Hs9V7DhhTEVZmvTmpP4FmYkHDrwrPacXclp/s1600/eclipse-createFixture.png+%28Case+Conflict+1%29&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdbY-tXbv5QyL9DVDbC1FaVRfatCKqJniuGvaJoAKtgeL1mtrxIbKGp5WQ9mXpQ4KXDUIz0pt2UzmY2ifzLWCknnNzCEioZBwyP4M_0GVt7Hs9V7DhhTEVZmvTmpP4FmYkHDrwrPacXclp/s640/eclipse-createFixture.png+%28Case+Conflict+1%29&quot; width=&quot;593&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Une fois
 cette boite de dialogue validée, vous devez avoir créé la classe
 SetupFormationsFixture.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
Implémentons cette classe :&lt;br /&gt;
&lt;br /&gt;
Remarque : Il est bien entendu possible d&#39;utiliser Spring3 ou EJB3, mais j&#39;ai volontairement simplifié le code car ces frameworks ne font pas l&#39;objet de ce tutorial.&lt;br /&gt;
Vous trouverez quelques éléments concernant l&#39;utilisation de Spring3 dans la dernière parie : &quot;4. Greenpepper avancé&quot;.&amp;nbsp; &lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Dans la classe SetupFormationsFixture, une fois générée par le plugin, vous pouvez aisément modifier les types des propriétés et remplacer le type de retour de la fonction enterRow par void. &lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #eeeeee; text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;i&gt;&lt;u&gt;&lt;b&gt;SetupFormationsFixture :&lt;/b&gt;&lt;/u&gt;&lt;/i&gt; &lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp.setup;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
public class
 SetupFormationsFixture {&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Date&amp;nbsp; date;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String description;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String libelle;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;
 public String lieu;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private GPEntityManager gpEntityManager = new GPEntityManager();&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;
 public SetupFormationsFixture() {&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void enterRow() {&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 gpEntityManager.createFormation(date, description, libelle, lieu);&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
}&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;GPEntityManager :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp.setup;&lt;br /&gt;
&lt;br /&gt;
import com.tutorial.greenpepper.dao.FormationDao;&lt;br /&gt;
import com.tutorial.greenpepper.domain.Formation;&lt;br /&gt;
&lt;br /&gt;
public class GPEntityManager {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private FormationDao formationDao = new FormationDao();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Formation createFormation(String date, String description, String libelle, String lieu) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return formationDao.createFormation(date, description, libelle, lieu);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;FormationDao :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
package com.tutorial.greenpepper.dao;&lt;br /&gt;
&lt;br /&gt;
import java.util.Calendar;&lt;br /&gt;
&lt;br /&gt;
import com.tutorial.greenpepper.domain.Formation;&lt;br /&gt;
&lt;br /&gt;
public class FormationDao {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Formation createFormation(Calendar date, String description, String libelle, String lieu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Formation formation = new Formation();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; formation.setDate(date);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; formation.setLibelle(description);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; formation.setLieu(lieu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; formation.setDescription(description);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return formation;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Avant de
 pouvoir exécuter cette fixture, il faut éditer la page de test sur Confluence et ajouter le package de la classe :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;{greenpepper-import:com.tutorial.greenpepper.gp.setup} &lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Il faut également faire un &quot;mvn install&quot; pour builder votre projet.&lt;br /&gt;
En effet, lors de l&#39;exécution d&#39;une fixture sur Confluence, Greenpepper charge le jar que vous lui avez indiqué dans le &quot;fixture Classpaths&quot;.&lt;br /&gt;
&lt;br /&gt;
Mettez à jour la page sur la vue &quot;Repository View&quot; sur Eclipse et exécutez la page. Si vous n&#39;avez pas d&#39;erreurs, le test a réussi.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Notez qu&#39;en exécutant les setup, vous n&#39;avez aucun résultats, contrairement aux autres tests. Les setup ne sont pas considérés comme des tests. &lt;/div&gt;
&lt;br /&gt;
Je vous laisse implémenter le setup des salariés.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;







































3.2 Implémentation des
  fixtures&lt;/h3&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;
































3.2.1 Scénario 1 - DoWith&lt;/h3&gt;
&lt;br /&gt;
Comme pour les setup, il faut générer la fixture à partir d&#39;Eclipse.&lt;br /&gt;
&lt;br /&gt;
Le code généré est le suivant :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;u style=&quot;background-color: #ea9999;&quot;&gt;&lt;i&gt;&lt;b&gt;InscrireSalarieFormationFixture&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;public class InscrireSalarieFormationFixture {&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public InscrireSalarieFormationFixture() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated Constructor stub&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String enregistrerLaSalarieeALaFormationTrue(String param1, String param2) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;N&lt;/span&gt;ous allons remplacer ce code par le code suivant :&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: justify;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;u style=&quot;background-color: #ea9999;&quot;&gt;&lt;i&gt;&lt;b&gt;InscrireSalarieFormationFixture&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
import com.tutorial.greenpepper.gp.setup.GPEntityManager;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;public class InscrireSalarieFormationFixture {&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
  &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private GPEntityManager gpEntityManager = new GPEntityManager();&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public InscrireSalarieFormationFixture() {&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;

  public boolean enregistrerLaSalarieeALaFormationTrue(String prenomNom, String libelleFormation) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gpEntityManager.enregistrerLaSalarieeALaFormation(prenomNom, libelleFormation);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
La fonction enregistrerLaSalarieeALaFormationTrue de gpEntityManager fait appel au service métier correspondant pour enregistrer le salarié à la formation passés en paramètres et retourne un booléan qui fera passer notre test au vert si elle retourne true.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;
































3.2.2 Scénario 1 - List of et Set of&lt;/h3&gt;
Sur cette page, nous avons deux fixtures : ListeDesInscriptionsFixture et ListeNonOrdonneeDesInscriptionsFixture.&lt;br /&gt;
&lt;br /&gt;
Elle s&#39;implémentent de la même manière sauf que la fixture du SetOf renvoie un Set et celle du ListOf renvoie une List.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code généré :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;i&gt;&lt;u&gt;&lt;b&gt;ListeDesInscriptionsFixture&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp;&lt;br /&gt;
&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
import com.tutorial.greenpepper.domain.InscriptionVO;&lt;br /&gt;
import com.tutorial.greenpepper.gp.setup.GPEntityManager;&lt;br /&gt;
&lt;br /&gt;
public class ListeDesInscriptionsFixture {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private GPEntityManager gpEntityManager = new GPEntityManager();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Set&amp;lt;InscriptionVO&amp;gt; query() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gpEntityManager.getInscriptionsNonOrdonnees();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
Code modifié :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;GPEntityManager :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
public Set&amp;lt;InscriptionVO&amp;gt; getInscriptionsNonOrdonnees() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set&amp;lt;InscriptionVO&amp;gt; result = new HashSet&amp;lt;InscriptionVO&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Salarie&amp;gt; salaries = salarieService.getSalaries();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Salarie salarie : salaries) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Formation formation : salarie.getFormations()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InscriptionVO inscription = new InscriptionVO();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inscription.setFormation(formation.getLibelle());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inscription.setNom(salarie.getNom());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inscription.setPrenom(salarie.getPrenom());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result.add(inscription);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...] &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;
































3.2.3 Scénario 1 - Rule For&lt;/h3&gt;
&lt;br /&gt;
Code généré automatiquement :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;VerificationInscriptionFixture :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class VerificationInscriptionFixture {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String nom;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String prenom;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public VerificationInscriptionFixture() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated Constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String formation() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated Method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
Code modifié :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;VerificationInscriptionFixture :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;
package com.tutorial.greenpepper.gp;&lt;br /&gt;
&lt;br /&gt;
import com.tutorial.greenpepper.gp.setup.GPEntityManager;&lt;br /&gt;
&lt;br /&gt;
public class VerificationInscriptionFixture {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String nom;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String prenom;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private GPEntityManager gpEntityManager = new GPEntityManager();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public VerificationInscriptionFixture() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String formation() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gpEntityManager.verifierInscriptionSalarie(nom, prenom);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;GPEntityManager&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
[...]&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
public String verifierInscriptionSalarie(String nom, String prenom) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return salarieService.getLibelleFormationBySalarie(nom, prenom);&lt;br /&gt;
}&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
&lt;br /&gt;
[...]&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #cfe2f3;&quot;&gt;











3.2.4 Scénario 1 - scenario&lt;/h3&gt;
&lt;br /&gt;
Code généré automatiquement :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;ScenarioTestFixture&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class ScenarioTestFixture {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ScenarioTestFixture() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated Constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Code modifié :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;ScenarioTestFixture&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class ScenarioTestFixture {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private GPEntityManager gpEntityManager = new GPEntityManager();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ScenarioTestFixture() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated Constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; @Given(&quot;inscrire (\\w+) (\\w+) a la (\\w+) (\\w+)&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void inscrire(String prenom, String nom, String libelleFormation, String intitule) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpEntityManager.inscrireSalarieAUneFormation(prenom, nom, libelleFormation.concat(&quot; &quot;).concat(intitule));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Check(&quot;verifier que (\\w+) (\\w+) est bien inscrite a la (\\w+) (\\w+)&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean verifierque(String prenom, String nom, String libelleFormation, String intitule) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gpEntityManager.salarieInscritALaFormation(prenom, nom, libelleFormation.concat(&quot; &quot;).concat(intitule));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
La première fonction représente un type de test &quot;given&quot;. C&#39;est à dire que c&#39;est une instruction visant à initialiser le contexte. C&#39;est exactement le même type d&#39;instruction que le test &quot;Do With&quot;.&lt;br /&gt;
Pour l&#39;implémenter, il faut :&lt;br /&gt;
- Identifier les mots pouvant être des paramètres et les remplacer par une expression régulière.&lt;br /&gt;
- Ajouter le type de test en tant qu&#39;annotation de la méthode, ici @Given. Cette annotation est présentation dans la libraire Greenpepper importée comme dépendance dans le pom.xml du projet.&lt;br /&gt;
- Chaque expression régulière est passée en paramètre de la fonction qui retourne un booléen. &lt;br /&gt;
&lt;br /&gt;
La deuxième fonction comporte l&#39;annotation @Check. Ce test peut être comparé au type de test &quot;Rule For&quot; qui vérifie l&#39;existence d&#39;un enregistrement en fonction de quelques paramètres qui sont formalisés ici en expressions régulières.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;background-color: #9fc5e8;&quot;&gt;





&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7975374801531630090&quot; name=&quot;section.2&quot;&gt;4. Greenpepper avancé&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
Dans cette partie, vous allez voir comment nous pouvons ajouter la prise en compte de Spring par Greenpepper et comment l&#39;utiliser dans le code des fixtures.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Afin que Greenpepper prenne en compte le fichier de context de spring, il faut ajouter dans la ligne de commande du Maven Runner l&#39;instruction suivante :&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;--sud com.monpackage.MonSud;com.monpackage.moncontext1.xml;com.monpackage.moncontext2.xml&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Une fois ajouté, Greenpepper est capable de détecter le package de votre SUD (System Under Test : Système testé. Ce package peut être celui de vos services métiers).&lt;br /&gt;
&lt;br /&gt;
Enfin, il faut créer une classe héritant de la classe DefaultSystemUnderDevelopment et implémenter son constructeur comme suit :&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #ea9999;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;MySpringSystemUnderDevelopment&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt; :&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;
package com.tutorial.greenpepper.gp.springSud;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class MySpringSystemUnderDevelopment {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public MySpringSystemUnderDevelopment(&lt;wbr&gt;&lt;/wbr&gt;String... applicationCtxes) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GenericApplicationContext context = new GenericApplicationContext();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(&lt;wbr&gt;&lt;/wbr&gt;context);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; applicationCtxes.length; i++) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reader.loadBeanDefinitions(&lt;wbr&gt;&lt;/wbr&gt;applicationCtxes[i]);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.refresh();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; beanFactory = context.getBeanFactory();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;
&lt;br /&gt;
Il est possible de ne mettre qu&#39;un applicationContext en paramètre, ou ne pas en mettre et le spécifier en &quot;dur&quot; dans le constructeur.&lt;br /&gt;
&lt;br /&gt;
Après avoir implémenté cette classe, il faut indiquer son nom (package.nomClasse) dans le champ texte &quot;class name&quot; dans les paramètres avancés de grennpepper dans les propriétés du projet sur Eclipse :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx-Vs5708u1do4X9CHiavS_WqCb55eLHEnPqoXfFYGZjQiSm3F8EFaYMd-CBXlJZZliAW_BluR9r7jaUqO8vBq06nmAxC2dm-Yc13SXIOvYHbUkmxRmfwjUmbjMsAaPaGSCPvlos-qJVMo/s1600/springsud.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx-Vs5708u1do4X9CHiavS_WqCb55eLHEnPqoXfFYGZjQiSm3F8EFaYMd-CBXlJZZliAW_BluR9r7jaUqO8vBq06nmAxC2dm-Yc13SXIOvYHbUkmxRmfwjUmbjMsAaPaGSCPvlos-qJVMo/s640/springsud.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Si le constructeur contient le ou les application context en paramètre, il faut les ajouter dans Constructor args séparés par des &quot;;&quot;.&lt;br /&gt;
&lt;br /&gt;
Ceci est suffisant pour que Greenpepper charge votre application context et pour que vos services spring soient injectés.&lt;br /&gt;
&lt;br /&gt;
Dans le code de la partie 3 parlant de l&#39;implémentation, il faudra remplacer l&#39;instanciation des services (ainsi que les dao dans les setup) par un @Autowired.&lt;br /&gt;
Il faut faire de même pour GpEntityManager qui est lui même un service Spring. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;background-color: #9fc5e8;&quot;&gt;





&lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=7975374801531630090&quot; name=&quot;section.2&quot;&gt;Conclusion&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
Dans ce tutorial, vous avez vu comment installer Greenpepper et ce qu&#39;étaient les tests fonctionnels automatisés avec cet outil en rédigeant quelques user stories et en les implémentant.&lt;br /&gt;
&lt;br /&gt;
Les test fonctionnels automatisés sont utilisés le pus souvent dans le cadre des méthodologies agiles. En effet, Grenpepper permet l&#39;expression du besoin par user stories et leur implémentation &quot;itérative&quot;. &lt;br /&gt;
&lt;br /&gt;
Ces tests ne remplacent pas les tests unitaires, tests d&#39;intégration, tests de présentation.&amp;nbsp; Ils testent la couche métier d&#39;une application et vérifie l&#39;adéquation entre le besoin et la réponse au besoin. &lt;br /&gt;
&lt;br /&gt;
Ce ne sont pas non plus seulement des tests de recette car ils peuvent être le reflet de l&#39;application sur une plate-forme de développement, de recette et même en production. Il représentent également des spécifications des user stories exprimées par la MOA.</content><link rel='replies' type='application/atom+xml' href='http://salimchami.blogspot.com/feeds/3797507113573050787/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7975374801531630090/3797507113573050787' title='7 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975374801531630090/posts/default/3797507113573050787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975374801531630090/posts/default/3797507113573050787'/><link rel='alternate' type='text/html' href='http://salimchami.blogspot.com/2012/02/greenpepper-29-tutorial-dinstallation.html' title='Greenpepper 2.9 - Tutorial d&#39;installation et d&#39;utilisation'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/04615421981468497976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT_E8XMmqsxZ9hxHNexLeSmn86x3AJQdRh0quV5x1UJyqxZoFZL8tV_-q7K1JNhuVBqfGuAv97LstNGNShxBFSXWLlMLAYE-4IntZzUS2PMDNJixu531W5fgxtVLYX1LrGSI1ViJnykzDj/s72-c/admin+space.png" height="72" width="72"/><thr:total>7</thr:total></entry></feed>