{"id":408,"date":"2010-05-26T13:44:54","date_gmt":"2010-05-26T11:44:54","guid":{"rendered":"http:\/\/loicmathieu.free.fr\/wordpress\/?p=408"},"modified":"2010-05-26T13:44:54","modified_gmt":"2010-05-26T11:44:54","slug":"ch%e2%80%99ti-jug-git-et-mockito","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-git-et-mockito\/","title":{"rendered":"Ch\u2019ti Jug: GIT et Mockito"},"content":{"rendered":"<p>Mardi 20 avril s&rsquo;est d\u00e9roul\u00e9 une session du <a title=\"Ch'ti JUG\" href=\"http:\/\/chtijug.org\/\">Ch&rsquo;ti JUG<\/a> sur GIT et Mockito sponsoris\u00e9 par <a title=\"ProxiAD\" href=\"http:\/\/www.proxiad.com\">ProxiAD <\/a>: <a href=\"http:\/\/chtijug.org\/session-le-20-avril-sur-git-et-mockito-avec-proxiad\/\">GIT et Mockito avec ProxiAD<\/a><\/p>\n<p>Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un    Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0   laquelle j\u2019ai particip\u00e9:\u00a0 <a href=\"..\/index.php\/informatique\/session-chti-jug-sur-les-technologies-google\/\" target=\"_blank\">Ch\u2019ti  Jug: les technologies Google.<\/a><\/p>\n<p>Cette session \u00e9t\u00e9 anim\u00e9e par David Gageot directeur technique chez <a title=\"Algodeal\" href=\"http:\/\/algodeal.com\">Algodeal<\/a>.<\/p>\n<h3>GIT<\/h3>\n<p>Les principaux atouts de GIT:<\/p>\n<ul><li>Rapide : il fonctionne en locale.<\/li>\n\n<li>D\u00e9connect\u00e9 : commit local, repository local int\u00e9grale, possibilit\u00e9 de synchroniser un repository local avec un repository\u00a0 distant<\/li>\n\n<li>Ouvert<\/li>\n\n<li>Flexible<\/li>\n\n<li>Robuste<\/li>\n\n<li>Simple : utilisation simple par des lignes de commandes<\/li>\n\n<li>Complet et Complet : possibilit\u00e9 \u00e9tendue.<\/li>\n\n<li>Grande communaut\u00e9 d&rsquo;utilisateur : <a href=\"http:\/\/github.com\/\">github<\/a><\/li>\n<\/ul>\n<p>De nombreux outils sont compris dans GIT qui permettent de faciliter grandement sont utilisation et qui peuvent faire gagner \u00e9norm\u00e9ment de temps. Le pr\u00e9sentateur nous a fait une d\u00e9monstration de l&rsquo;outil <strong>git-bisect<\/strong> qui a lui-seul suffit \u00e0 vouloir utiliser GIT.<\/p>\n<p>Imaginez que vous ayez fait une centaines de commit dans votre repository et que vous d\u00e9couvrez ensuite que les sources ne compilent plus! Comment faire pour trouver l&rsquo;erreur ? git-bisect vous permet de facilement retrouver le commit \u00e0 partir duquel vos sources ne compilent plus. Son principe: il utilise un algorithme de type dichotomie pour tester un a un l&rsquo;\u00e9tat de votre repository. Pour cela vous lui donnez la version de d\u00e9part et une commande \u00e0 ex\u00e9cuter (par exemple \u00ab\u00a0mvn compile\u00a0\u00bb si vous utilisez Maven), il va ensuite lancer la commande sur les versions de votre repository et vous donner la premi\u00e8re version dont la commande est en erreur. Comme il utilise un algorithme de dichotomie cela prend beaucoup moins de temps que de tester toutes les version &#8230; et en plus c&rsquo;est automatis\u00e9!<\/p>\n<p>Comment marche git au jour le jour. N&rsquo;importe quel r\u00e9pertoire peut \u00eatre d\u00e9finie comme un repository git (le pr\u00e9sentateur nous a m\u00eame expliqu\u00e9 qu&rsquo;avant toute mise \u00e0 jour d&rsquo;Eclipse il transformer le r\u00e9pertoire d&rsquo;Eclipse en repository git pour pouvoir revenir en arri\u00e8re si n\u00e9cessaire!). Ensuite ils suffit d&rsquo;ajouter des fichiers (git add) et de faire des commits des fichiers (git commit -m \u00ab\u00a0message\u00a0\u00bb). Tout se passe alors en locale, sans connexion a aucun serveur.<\/p>\n<p>Vous me direz, oui mais, et le travail en \u00e9quipe?<\/p>\n<p>Pour cela il y a de nombreuses mani\u00e8re de faire.\nPar d\u00e9finition, on doit utiliser les commandes suivantes:<\/p>\n<ul><li>git clone : clone un repository (depuis une machine distante, un disque r\u00e9seaux, une cl\u00e9 USB, un autre r\u00e9pertoire, &#8230;).<\/li>\n\n<li>git push : envoit les modification de votre repository vers un autre.<\/li>\n\n<li>git pull : recup\u00e8re les modification d&rsquo;un autre repository.<\/li>\n<\/ul>\n<p>Classiquement, on utilise deux architecture diff\u00e9rentes:<\/p>\n<ul><li>Server centralis\u00e9 : on d\u00e9fini un serveur qui sera le repository centralis\u00e9 sur lequel toute l&rsquo;\u00e9quipe fera ses push et depuis lequel elle fera ses pull.<\/li>\n\n<li>Cercle de confiance : architecture utilis\u00e9 dans les projets open source (et notamment dans le d\u00e9veloppement du noyeau linux). Il y aura alors une hi\u00e9rarchie de commiteur, les plus \u00ab\u00a0petit\u00a0\u00bb feront un push vers une personne de plus grande confiance qui lorsqu&rsquo;elle aura tester les changement fera un push vers une personne de plus grande confiance et cela jusqu&rsquo;au repository de r\u00e9f\u00e9rence. Ensuite tout le monde fera des pull en cascade. Int\u00e9r\u00eat: pas d&rsquo;administration, id\u00e9ale pour les grande \u00e9quipe, v\u00e9rification limit\u00e9 gr\u00e2ce aux cercles de confiance, pas de serveur centralis\u00e9: peut marcher s&rsquo;il y a d\u00e9faillance d&rsquo;une partie des repository.<\/li>\n<\/ul>\n<p>GIT est r\u00e9put\u00e9 aussi pour son merge \u00ab\u00a0omniscient\u00a0\u00bb : GIT peut merger tout seul \u00e9norm\u00e9ment de situation qui sous d&rsquo;autre gestionnaire de  source n\u00e9cessite une action manuelle et permet donc des refactoring lourd sans  code freeze. Il r\u00e9ussit \u00e0 faire un merge d&rsquo;un fichier ayant \u00e9t\u00e9 d\u00e9plac\u00e9 et  renomm\u00e9 alors qu&rsquo;une autre personne le modifi\u00e9!<\/p>\n<p>Pour tout ceux qui voudrait essayer, il existe un outils permettant  de migrer un repository SVN existant en gardant l&rsquo;historiquel : git-svn.<\/p>\n<p>Il existe de nombreuses autres fonctionnalit\u00e9s, si vous \u00eates  int\u00e9ress\u00e9, n&rsquo;h\u00e9sitez pas \u00e0 creuser le sujet.<\/p>\n<p>MOKITO<\/p>\n<p>Mockito est un framework de mock facilitant grandement l&rsquo;\u00e9criture de test unitaire par la possibilit\u00e9 de cr\u00e9er diff\u00e9rents objets de test tel que :<\/p>\n<ul><li>Dummy object : Mockito.mock(Class c) : mock une classe concr\u00e8te ou une interface : cr\u00e9\u00e9 une instance \u00ab\u00a0bidon\u00a0\u00bb de cette classe.<\/li>\n\n<li>Fake object : MaClass fake = Mockito.mock(MaClass.class); when(fake.getTime()).thenReturn(1,2,3) : cr\u00e9e une instance \u00ab\u00a0bidon\u00a0\u00bb de la classe retournant des valeurs pr\u00e9d\u00e9finie (1,2,3) lors d&rsquo;appel successifs d&rsquo;une des m\u00e9thode de cette classe.<\/li>\n\n<li>Stub : MaClass stub = Mockito.mock(MaClass.class); verify(stub).send(Email.class) : cr\u00e9e une instance \u00ab\u00a0bidon\u00a0\u00bb de la classe. On peut ensuite l&rsquo;utiliser (par exemple appeler une m\u00e9thode send avec comme param\u00e8tre un Email). Puis dans notre testcase on va v\u00e9rifier que notre stub a bien \u00e9t\u00e9 appel\u00e9 : on v\u00e9rifie que la m\u00e9thode send a \u00e9t\u00e9 appel\u00e9 avec un email en param\u00e8tre.<\/li>\n\n<li>Mock : sur le m\u00eame principe un mock permet de valider les exceptions, l&rsquo;appel des m\u00e9thodes avec le contenu des param\u00e8tre, les appels multiples, les r\u00e9ponses multiples, &#8230;<\/li>\n<\/ul>\n<p>Mockito peut s&rsquo;interfacer facilement avec JUnit4 gr\u00e2ce \u00e0 l&rsquo;annotation RunWith qui permet ensuite d&rsquo;utiliser l&rsquo;annotation Mock pour mocker un objet.<\/p>\n<p>Mockito contient de nombreuses fonctionnalit\u00e9s avanc\u00e9es toujours aussi facilement utilisable (mock partiel, deep-stub, syntaxe BDD, &#8230;), pour plus d&rsquo;information allez faire un tour sur le site officiel: <a href=\"http:\/\/code.google.com\/p\/mockito\/\"><a href=\"http:\/\/code.google.com\/p\/mockito\/\">http:\/\/code.google.com\/p\/mockito\/<\/a><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Mardi 20 avril s&rsquo;est d\u00e9roul\u00e9 une session du Ch&rsquo;ti JUG sur GIT et Mockito sponsoris\u00e9 par ProxiAD : GIT et Mockito avec ProxiAD Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j\u2019ai particip\u00e9:\u00a0 Ch\u2019ti Jug: les technologies Google. Cette session \u00e9t\u00e9 anim\u00e9e par David Gageot directeur technique chez Algodeal. GIT Les principaux atouts de GIT: Rapide : il fonctionne en locale&#8230;.<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-git-et-mockito\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[],"class_list":["post-408","post","type-post","status-publish","format-standard","hentry","category-informatique"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":391,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-drools-v5-et-drools-planner\/","url_meta":{"origin":408,"position":0},"title":"Ch&rsquo;ti Jug: Drools v5 et Drools Planner","author":"admin","date":"samedi 13 f\u00e9vrier 2010","format":false,"excerpt":"Jeudi 21 janvier s'est tenu dans les locaux de l'Universit\u00e9 de Lille 1 une session du Ch'ti Jug sponsoris\u00e9e par Cylande sur Drools:\u00a0 Drools, avec Cylande et l'Universit\u00e9 Lille 1 Pour ceux qui ne savent pas ce qu'est le Ch'ti Jug ou ce qu'est un Jug, voir l'introduction de mon\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":386,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-html5-websocket-et-autres-protocole-de-communication\/","url_meta":{"origin":408,"position":1},"title":"Ch&rsquo;ti JUG: HTML5: WebSocket et autres protocole de communication","author":"admin","date":"dimanche 13 d\u00e9cembre 2009","format":false,"excerpt":"Jeudi s'est tenu dans les locaux d'ADEO une session du Ch'ti Jug sur HTML5 et tout particuli\u00e8rement les WebSockets: Kaazing HTML5 WebSocket Talk at the Ch\u2019ti JUG Meeting in Lille, France Pour ceux qui ne savent pas ce qu'est le Ch'ti Jug ou ce qu'est un Jug, voir l'introduction de\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":399,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-glassfish-esb\/","url_meta":{"origin":408,"position":2},"title":"Ch\u2019ti Jug: GlassFish ESB","author":"admin","date":"lundi  1 mars 2010","format":false,"excerpt":"Jeudi 21 janvier s\u2019est tenu une session du Ch\u2019ti Jug sponsoris\u00e9e par\u00a0 Cap Gemini sur GlassFish ESB : GlassFish ESB avec CAPGEMINI. Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j\u2019ai\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":566,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-lili-et-cassandra\/","url_meta":{"origin":408,"position":3},"title":"Ch&rsquo;ti JUG : Lili et Cassandra","author":"admin","date":"jeudi 15 d\u00e9cembre 2011","format":false,"excerpt":"Le 12 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur Lili et Cassandra deux outils autour des bases de donn\u00e9es NoSql. La pr\u00e9sentation de Lili a \u00e9t\u00e9 faite par Stevens Noel et celle sur Cassandra par J\u00e9r\u00e9my Sevellec. Ayant d\u00e9j\u00e0 \u00e9crit\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":377,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/session-chti-jug-sur-les-technologies-google\/","url_meta":{"origin":408,"position":4},"title":"Ch&rsquo;ti Jug: les technologies Google","author":"admin","date":"mercredi 11 novembre 2009","format":false,"excerpt":"Hello, Lundi j'ai \u00e9t\u00e9 \u00e0 la session du Ch'ti Jug sur les technologies Google qui s'est pass\u00e9 \u00e0 l'ISEN et \u00e9tait sponsoris\u00e9e par SII. C'\u00e9tait la premi\u00e8re fois que j'assistais \u00e0 un \u00e9v\u00e8nement organis\u00e9 par le Ch'ti Jug et comme c'\u00e9tait int\u00e9ressant, j'aimerais partager avec vous l\u00e0 dessus. Ch'ti Jug?\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"Google Wave","src":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200 1x, https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=525%2C300 1.5x"},"classes":[]},{"id":419,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-nosql\/","url_meta":{"origin":408,"position":5},"title":"Ch&rsquo;ti JUG : NoSQL","author":"admin","date":"lundi 20 d\u00e9cembre 2010","format":false,"excerpt":"Le 2 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur les technologie NoSQL anim\u00e9 par Olivier Mallassi. L'intervenant a commenc\u00e9 la conf\u00e9rence par un bref historique de la mani\u00e8re dont les donn\u00e9es on \u00e9t\u00e9 stock\u00e9es dans le monde de l'informatique: Au\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=408"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/408\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}