{"id":2612,"date":"2024-03-23T09:47:28","date_gmt":"2024-03-23T08:47:28","guid":{"rendered":"https:\/\/ittester.sk\/non-classifiee\/test-de-dependance\/"},"modified":"2024-10-22T14:06:05","modified_gmt":"2024-10-22T12:06:05","slug":"test-de-dependance","status":"publish","type":"post","link":"https:\/\/ittester.sk\/fr\/tests-automatises\/tutoriel-testng\/test-de-dependance\/","title":{"rendered":"D\u00e9pendance dans TestNG"},"content":{"rendered":"\n<p>La r\u00e8gle est que chaque m\u00e9thode d&rsquo;essai doit \u00eatre ind\u00e9pendante des autres, c&rsquo;est-\u00e0-dire que j. le r\u00e9sultat ou la performance d&rsquo;une m\u00e9thode d&rsquo;essai ne doit pas affecter les autres m\u00e9thodes d&rsquo;essai. Cependant, dans le cadre de l&rsquo;automatisation, il peut arriver qu&rsquo;une m\u00e9thode de test d\u00e9pende d&rsquo;autres m\u00e9thodes.<\/p>\n\n<p>Nous pouvons vouloir pr\u00e9server les d\u00e9pendances entre les m\u00e9thodes de test pour gagner du temps, ou pour des sc\u00e9narios dans lesquels l&rsquo;appel \u00e0 l&rsquo;ex\u00e9cution d&rsquo;un test particulier d\u00e9pend du r\u00e9sultat d&rsquo;un autre test.<\/p>\n\n<p>TestNG est un cadre de test qui nous fournit deux attributs &#8211; dependsOnMethod et dependsOnGroup dans l&rsquo;annotation @Test pour cr\u00e9er des d\u00e9pendances entre les tests. Examinons maintenant ces attributs.<\/p>\n\n<h2 class=\"wp-block-heading\"><strong>Table des mati\u00e8res<\/strong><\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-dependsonmethod\">dependsOnMethod<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-uryvok-kodu\">\u00daryvok k\u00f3du<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vystup\">V\u00fdstup<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-dependsongroup\">dependsOnGroup<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-uryvok-kodu\">\u00daryvok k\u00f3du<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vysledok-testng\">V\u00fdsledok TestNG<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-dependsonmethod\">D\u00e9pend de la m\u00e9thode<\/h2>\n\n<p>En utilisant l&rsquo;attribut \u00ab\u00a0dependsOnMethod\u00a0\u00bb dans l&rsquo;annotation @Test, nous pouvons sp\u00e9cifier le nom de la m\u00e9thode de test parent dont le test doit d\u00e9pendre.<\/p>\n\n<p>Quelques points \u00e0 retenir concernant dependsOnMethod :<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Lors de l&rsquo;ex\u00e9cution d&rsquo;une classe de test ou d&rsquo;une suite de tests compl\u00e8te, la m\u00e9thode parentTest est ex\u00e9cut\u00e9e avant la m\u00e9thode dependentTest.<\/li>\n\n\n\n<li>Si nous ex\u00e9cutons dependentTest lui-m\u00eame, la m\u00e9thode parentTest est \u00e9galement ex\u00e9cut\u00e9e avant dependentTest.<\/li>\n\n\n\n<li>Si la m\u00e9thode parentTest \u00e9choue, la m\u00e9thode dependentTest ne s&rsquo;ex\u00e9cutera pas et sera consid\u00e9r\u00e9e comme ignor\u00e9e.<\/li>\n<\/ul>\n\n<p><strong>@Test(dependsOnMethods={\u00ab\u00a0parentTest\u00a0\u00bb})<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-uryvok-kodu\">Extrait de code<\/h2>\n\n<p>Dans l&rsquo;extrait de code suivant, nous avons deux m\u00e9thodes de test &#8211; parentTest() et dependentTest(). La m\u00e9thode dependentTest d\u00e9pend de la m\u00e9thode parentTest \u00e0 l&rsquo;aide de l&rsquo;attribut dependsOnMethods.<\/p>\n\n<pre class=\"wp-block-code\"><code>public class TutorialExample {\n\n\u00a0\u00a0\u00a0\u00a0@Test\n\n\u00a0\u00a0\u00a0\u00a0public void parentTest() {\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Running parent test.\");\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0@Test(dependsOnMethods={\"parentTest\"})\u00a0\n\n\u00a0\u00a0\u00a0\u00a0public void dependentTest() {\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Running dependent test.\");\n\n\u00a0\u00a0\u00a0\u00a0}\u00a0\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vystup\">R\u00e9cup\u00e9r\u00e9 de<\/h2>\n\n<p>Lorsque la m\u00e9thode dependentTest() est elle-m\u00eame ex\u00e9cut\u00e9e, la m\u00e9thode parentTest() est \u00e9galement ex\u00e9cut\u00e9e avant la m\u00e9thode dependentTest(). Ceci est fait dans le but de maintenir la d\u00e9pendance.<\/p>\n\n<pre class=\"wp-block-code\"><code>Running parent test.\n\nRunning dependent test.\n\nPASSED: parentTest\n\nPASSED: dependentTest\n\n===============================================\n\n\u00a0\u00a0\u00a0\u00a0Default test\n\n\u00a0\u00a0\u00a0\u00a0Tests run: 2, Failures: 0, Skips: 0\n\n===============================================<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-dependsongroup\">D\u00e9pend du groupe<\/h2>\n\n<p>L&rsquo;attribut dependsOnGroup est utilis\u00e9 pour faire d\u00e9pendre une m\u00e9thode de test d&rsquo;un ensemble de tests appartenant \u00e0 un groupe sp\u00e9cifique. Cela garantit que le test d\u00e9pendant est ex\u00e9cut\u00e9 apr\u00e8s que tous les tests du groupe parent ont \u00e9t\u00e9 ex\u00e9cut\u00e9s.<\/p>\n\n<p>Quelques points \u00e0 retenir concernant DependsOnMethod :<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Lors de l&rsquo;ex\u00e9cution d&rsquo;une classe de test ou d&rsquo;une suite de tests compl\u00e8te, les tests appartenant au groupe parent sont ex\u00e9cut\u00e9s avant les tests d\u00e9pendants.<\/li>\n\n\n\n<li>Si nous ex\u00e9cutons dependentTest lui-m\u00eame, tous les tests appartenant au groupe parent seront ex\u00e9cut\u00e9s avant dependentTest.<\/li>\n\n\n\n<li>Si un ou tous les tests de la m\u00e9thode du groupe parent \u00e9chouent, la m\u00e9thode dependentTest ne s&rsquo;ex\u00e9cutera pas et sera consid\u00e9r\u00e9e comme ignor\u00e9e.<\/li>\n<\/ul>\n\n<p><strong>@Test(dependsOnGroups = \u00ab\u00a0groupA\u00a0\u00bb)<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-uryvok-kodu\">Extrait de code<\/h2>\n\n<p>Dans l&rsquo;extrait de code suivant, nous avons deux m\u00e9thodes de test &#8211; testMethod1ForGroupA() et testMethod2ForGroupA(), qui appartiennent au groupe groupA. Nous avons ensuite une m\u00e9thode dependentTest &#8211; dependentTestOnGroupA, qui d\u00e9pend des m\u00e9thodes du groupeA \u00e0 l&rsquo;aide de l&rsquo;attribut dependsOnGroups. Pour les besoins de la d\u00e9monstration, nous faisons d\u00e9lib\u00e9r\u00e9ment \u00e9chouer la m\u00e9thode testMethod2ForGroupA.<\/p>\n\n<pre class=\"wp-block-code\"><code>public class TutorialExample {\n\n\u00a0\u00a0\u00a0\u00a0@Test(groups = \"groupA\")\n\n\u00a0\u00a0\u00a0\u00a0public void testMethod1ForGroupA() {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Running test method1 of groupA\");\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0@Test(groups = \"groupA\")\n\n\u00a0\u00a0\u00a0\u00a0public void testMethod2ForGroupA() {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Running test method2 of groupA\");\n\n\u00a0\u00a0\u00a0\u00a0\u00a0Assert.fail();\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0@Test(dependsOnGroups = \"groupA\")\n\n\u00a0\u00a0\u00a0\u00a0public void dependentTestOnGroupA() {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Running the dependent test\");\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vysledok-testng\">R\u00e9sultat de TestNG<\/h2>\n\n<p>Lorsque la fonction dependentTestOnGroupA() elle-m\u00eame est ex\u00e9cut\u00e9e ou que la classe de test enti\u00e8re est ex\u00e9cut\u00e9e, nous pouvons observer la sortie suivante.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"270\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/03\/vysledok-testng-800-270.webp\" alt=\"\" class=\"wp-image-1178\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2024\/03\/vysledok-testng-800-270.webp 800w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/03\/vysledok-testng-800-270-300x101.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2024\/03\/vysledok-testng-800-270-768x259.webp 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n<p>Ici, nous pouvons observer que TestNG essaie d&rsquo;ex\u00e9cuter les 3 tests et, en raison de la d\u00e9pendance, il ex\u00e9cute d&rsquo;abord testMethod1ForGroupA et testMethod2ForGroupA. Puisque testMethod2ForGroupA a \u00e9chou\u00e9, dependentTest, t. j. dependentTestOnGroupA, n&rsquo;est pas ex\u00e9cut\u00e9 et est marqu\u00e9 comme ignor\u00e9.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TestNG fournit deux attributs (dependsOnMethod et dependsOnGroup) pour r\u00e9aliser des d\u00e9pendances entre les tests.<\/p>\n","protected":false},"author":8,"featured_media":2615,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[46],"tags":[],"class_list":["post-2612","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriel-testng"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/comments?post=2612"}],"version-history":[{"count":1,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2612\/revisions"}],"predecessor-version":[{"id":2617,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/posts\/2612\/revisions\/2617"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media\/2615"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/media?parent=2612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/categories?post=2612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/fr\/wp-json\/wp\/v2\/tags?post=2612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}