{"id":1240,"date":"2024-03-23T09:47:28","date_gmt":"2024-03-23T08:47:28","guid":{"rendered":"https:\/\/ittester.sk\/automatisiertes-testen\/abhaengigkeitspruefung\/"},"modified":"2024-07-11T09:43:39","modified_gmt":"2024-07-11T07:43:39","slug":"abhaengigkeitspruefung","status":"publish","type":"post","link":"https:\/\/ittester.sk\/de\/automatisiertes-testen\/testng-anleitung\/abhaengigkeitspruefung\/","title":{"rendered":"Abh\u00e4ngigkeiten in TestNG"},"content":{"rendered":"\n<p>Die Regel lautet, dass jede Pr\u00fcfmethode unabh\u00e4ngig von den anderen sein muss, d. h. j. das Ergebnis oder die Durchf\u00fchrung einer Pr\u00fcfmethode darf die anderen Pr\u00fcfmethoden nicht beeinflussen. Bei der Automatisierung kann es jedoch erforderlich sein, dass eine Testmethode von anderen abh\u00e4ngt.<\/p>\n\n<p>M\u00f6glicherweise m\u00f6chten wir Abh\u00e4ngigkeiten zwischen Testmethoden beibehalten, um Zeit zu sparen, oder f\u00fcr Szenarien, in denen der Aufruf zur Ausf\u00fchrung eines bestimmten Tests vom Ergebnis eines anderen Tests abh\u00e4ngt.<\/p>\n\n<p>TestNG ist ein Test-Framework, das uns zwei Attribute zur Verf\u00fcgung stellt &#8211; dependsOnMethod und dependsOnGroup innerhalb der @Test-Annotation, um Abh\u00e4ngigkeiten zwischen Tests zu erreichen. Lassen Sie uns nun diese Attribute untersuchen.<\/p>\n\n<h2 class=\"wp-block-heading\"><strong>Inhalts\u00fcbersicht<\/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\">DependsOnMethod<\/h2>\n\n<p>Mit dem Attribut &#8222;dependsOnMethod&#8220; in der @Test-Annotation k\u00f6nnen wir den Namen der \u00fcbergeordneten Testmethode angeben, von der der Test abh\u00e4ngen soll.<\/p>\n\n<p>Einige Punkte, die Sie bei dependsOnMethod beachten sollten:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Bei der Ausf\u00fchrung einer ganzen Testklasse oder Testsuite wird die parentTest-Methode vor der dependentTest-Methode ausgef\u00fchrt.<\/li>\n\n\n\n<li>Wenn wir dependentTest selbst ausf\u00fchren, wird die Methode parentTest ebenfalls vor dependentTest ausgef\u00fchrt.<\/li>\n\n\n\n<li>Wenn die Methode parentTest fehlschl\u00e4gt, wird die Methode dependentTest nicht ausgef\u00fchrt und als \u00fcbersprungen markiert.<\/li>\n<\/ul>\n\n<p><strong>@Test(dependsOnMethods={&#8222;parentTest&#8220;})<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-uryvok-kodu\">Code-Schnipsel<\/h2>\n\n<p>Im folgenden Codeschnipsel haben wir zwei Testmethoden &#8211; parentTest() und dependentTest(). Die Methode dependentTest h\u00e4ngt von der Methode parentTest ab, indem sie das Attribut dependsOnMethods verwendet.<\/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\">Abgerufen von<\/h2>\n\n<p>Wenn die Methode dependentTest() selbst ausgef\u00fchrt wird, wird auch die Methode parentTest() vor der Methode dependentTest() ausgef\u00fchrt. Dies geschieht im Interesse der Aufrechterhaltung der Abh\u00e4ngigkeiten.<\/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\">DependsOnGroup<\/h2>\n\n<p>Das Attribut dependsOnGroup wird verwendet, um eine Testmethode von einer Sammlung von Tests abh\u00e4ngig zu machen, die zu einer bestimmten Gruppe geh\u00f6ren. Dadurch wird sichergestellt, dass der abh\u00e4ngige Test ausgef\u00fchrt wird, nachdem alle Tests der \u00fcbergeordneten Gruppe ausgef\u00fchrt wurden.<\/p>\n\n<p>Einige Punkte, die Sie sich bei DependsOnMethod merken sollten:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Bei der Ausf\u00fchrung einer ganzen Testklasse oder Testsuite werden die Tests der \u00fcbergeordneten Gruppe vor den abh\u00e4ngigen Tests ausgef\u00fchrt.<\/li>\n\n\n\n<li>Wenn wir dependentTest selbst ausf\u00fchren, werden alle Tests, die zur \u00fcbergeordneten Gruppe geh\u00f6ren, vor dependentTest ausgef\u00fchrt.<\/li>\n\n\n\n<li>Wenn einer oder alle Tests der \u00fcbergeordneten Gruppenmethode fehlschlagen, wird die Methode dependentTest nicht ausgef\u00fchrt und als \u00fcbersprungen markiert.<\/li>\n<\/ul>\n\n<p><strong>@Test(dependsOnGroups = &#8222;groupA&#8220;)<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-uryvok-kodu\">Code-Schnipsel<\/h2>\n\n<p>Im folgenden Codeschnipsel haben wir zwei Testmethoden &#8211; testMethod1ForGroupA() und testMethod2ForGroupA(), die zur Gruppe groupA geh\u00f6ren. Dann haben wir eine Methode dependentTest &#8211; dependentTestOnGroupA, die von den Methoden der GruppeA abh\u00e4ngig ist, indem wir das Attribut dependsOnGroups verwenden. Zu Demonstrationszwecken lassen wir die Methode testMethod2ForGroupA absichtlich scheitern.<\/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\">TestNG-Ergebnis<\/h2>\n\n<p>Wenn die Funktion dependentTestOnGroupA() selbst oder die gesamte Testklasse ausgef\u00fchrt wird, k\u00f6nnen wir die folgende Ausgabe beobachten.<\/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>Hier k\u00f6nnen wir beobachten, dass TestNG versucht, alle 3 Tests auszuf\u00fchren und aufgrund der Abh\u00e4ngigkeit zuerst testMethod1ForGroupA und testMethod2ForGroupA ausf\u00fchrt. Da testMethod2ForGroupA fehlgeschlagen ist, dependentTest, t. j. dependentTestOnGroupA, wird nicht ausgef\u00fchrt und als \u00fcbersprungen markiert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TestNG bietet zwei Attribute (dependsOnMethod und dependsOnGroup), um Abh\u00e4ngigkeiten zwischen Tests zu erreichen.<\/p>\n","protected":false},"author":8,"featured_media":1583,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[25],"tags":[],"class_list":["post-1240","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testng-anleitung"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/1240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/comments?post=1240"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/1240\/revisions"}],"predecessor-version":[{"id":1585,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/1240\/revisions\/1585"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media\/1583"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media?parent=1240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/categories?post=1240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/tags?post=1240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}