{"id":1730,"date":"2024-06-07T12:31:25","date_gmt":"2024-06-07T10:31:25","guid":{"rendered":"https:\/\/ittester.sk\/automatisiertes-testen\/testng-fragen-zum-gesprach\/"},"modified":"2024-07-11T09:43:50","modified_gmt":"2024-07-11T07:43:50","slug":"testng-fragen-zum-gesprach","status":"publish","type":"post","link":"https:\/\/ittester.sk\/de\/vorstellungsgesprach-fragen\/testng-fragen-zum-gesprach\/","title":{"rendered":"TestNG: Interviewfragen"},"content":{"rendered":"\n<p>TestNG ist eines der am weitesten verbreiteten Test-Frameworks sowohl f\u00fcr Unit- als auch f\u00fcr automatisierte Tests. In diesem Leitfaden haben wir einige der am h\u00e4ufigsten gestellten Fragen und Antworten auf Interviews zusammengestellt, sowohl f\u00fcr Neulinge in diesem Bereich als auch f\u00fcr erfahrene Mitarbeiter.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 1. Was ist TestNG?<\/h2>\n\n<p>Antwort: TestNG (NG wie Next Generation) ist ein Test-Framework, das in Selenium oder jedes andere Automatisierungstool integriert werden kann, um zahlreiche Funktionen wie Assertions, Berichte, parallele Testausf\u00fchrung usw. zu bieten.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 2. Was sind die Vorteile von TestNG?<\/h2>\n\n<p>A: Die Vorteile von TestNG sind:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>TestNG bietet verschiedene Assertions (Behauptungen), die bei der \u00dcberpr\u00fcfung von erwarteten und tats\u00e4chlichen Ergebnissen helfen.<\/li>\n\n\n\n<li>Erm\u00f6glicht die parallele Ausf\u00fchrung von Testmethoden.<\/li>\n\n\n\n<li>In TestNG k\u00f6nnen wir die Abh\u00e4ngigkeit einer Testmethode von einer anderen definieren.<\/li>\n\n\n\n<li>Wir k\u00f6nnen den Testmethoden in Selenium Priorit\u00e4ten zuweisen.<\/li>\n\n\n\n<li>Erm\u00f6glicht die Gruppierung von Testmethoden in Testgruppen.<\/li>\n\n\n\n<li>Erm\u00f6glicht datengesteuerte Tests mit der @DataProvider-Anmerkung.<\/li>\n\n\n\n<li>Es verf\u00fcgt \u00fcber eine integrierte Unterst\u00fctzung f\u00fcr Berichte.<\/li>\n\n\n\n<li>Es bietet Unterst\u00fctzung f\u00fcr die Parametrisierung von Testf\u00e4llen mit der @Parameters-Annotation.<\/li>\n<\/ol>\n\n<h2 class=\"wp-block-heading\">Frage 3. Wie unterscheidet sich TestNG von Selenium WebDriver?<\/h2>\n\n<p>A: Selenium ist ein Automatisierungstool, das wir zur Automatisierung von Webanwendungen verwenden k\u00f6nnen. Um die Testautomatisierungssuiten um Testfunktionen zu erweitern, ist Selenium mit TestNG verbunden. Mit TestNG k\u00f6nnen wir verschiedene Funktionen in unserer Automatisierungssuite nutzen, z. B. verschiedene Arten von Assertions, Berichte, parallele Ausf\u00fchrung, Parametrisierung usw.<\/p>\n\n<p>Kurz gesagt, um Automatisierungstests durchzuf\u00fchren, hilft Selenium bei der &#8222;Automatisierung&#8220; und TestNG bei den &#8222;Test&#8220;-Funktionen.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 4. Wof\u00fcr wird die Datei testng.xml verwendet?<\/h2>\n\n<p>A: Die Datei testng.xml wird zur Konfiguration der gesamten Testsuite verwendet. In der Datei testng.xml k\u00f6nnen wir eine Testsuite erstellen, Testgruppen anlegen, Tests f\u00fcr die parallele Ausf\u00fchrung markieren, Listener hinzuf\u00fcgen und Parameter an Testskripts \u00fcbergeben. Wir k\u00f6nnen diese Datei testng.xml auch verwenden, um die Testsuite \u00fcber die Kommandozeile\/Terminal oder Jenkins auszuf\u00fchren.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 5. Wie k\u00f6nnen wir Testf\u00e4lle als separate Testf\u00e4lle f\u00fcr die Sanity Suite, die Regression Suite usw. gruppieren?<\/h2>\n\n<p>A: Mit dem Attribut groups in TestNG k\u00f6nnen wir Testmethoden verschiedenen Gruppen zuordnen.<\/p>\n\n<pre class=\"wp-block-code\"><code>\/\/Testovacia met\u00f3da patriaca len do sanity suite\n\n@Test(groups = {\"sanitySuite\"})\n\npublic void testMethod1() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}\n\n\/\/Testovacia met\u00f3da patriaca do sady sanity aj regresnej sady\n\n@Test(groups = {\"sanitySuite\", \"regressionSuite\"})\n\npublic void testMethod2() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Fragen 6. Wie k\u00f6nnen wir eine Testmethode \u00fcber die Datei testng.xml von der Ausf\u00fchrung ausschlie\u00dfen?<\/h2>\n\n<p>A: Durch die Verwendung des exclude-Tags in der Datei testng.xml k\u00f6nnen wir eine bestimmte Testmethode von der Ausf\u00fchrung ausschlie\u00dfen.<\/p>\n\n<pre class=\"wp-block-code\"><code>&lt;suite name=\"Test Suite\" verbose=\"1\"&gt;\n\n&nbsp;&nbsp;&nbsp;&lt;test name=\"TestName\"&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class name=\"TestClassName\"&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;methods&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;exclude name=\"testMethodToBeExcluded\"\/&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/methods&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/class&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/classes&gt;\n\n&nbsp;&nbsp;&nbsp;&lt;\/test&gt;\n\n&lt;\/suite&gt;<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Fragen 7. Was sind einige h\u00e4ufig verwendete TestNG-Annotationen?<\/h2>\n\n<p>Antwort: H\u00e4ufig verwendete TestNG-Anmerkungen sind:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>@Test &#8211; die Annotation @Test kennzeichnet die Methode als Testmethode.<\/li>\n\n\n\n<li>@BeforeSuite &#8211; Die Annotationsmethode wird nur einmal ausgef\u00fchrt, bevor alle Tests in dieser Suite ausgef\u00fchrt werden.<\/li>\n\n\n\n<li>@AfterSuite &#8211; Die kommentierte Methode wird nur einmal ausgef\u00fchrt, nachdem alle Tests in dieser Suite gelaufen sind.<\/li>\n\n\n\n<li>@BeforeClass &#8211; Die annotierte Methode wird nur einmal vor dem Aufruf der ersten Testmethode in der aktuellen Klasse ausgef\u00fchrt.<\/li>\n\n\n\n<li>@AfterClass &#8211; Die kommentierte Methode wird nur einmal ausgef\u00fchrt, nachdem alle Testmethoden in der aktuellen Klasse ausgef\u00fchrt wurden.<\/li>\n\n\n\n<li><test>@BeforeTest &#8211; Die kommentierte Methode wird ausgef\u00fchrt, bevor eine Testmethode, die zu Klassen innerhalb des Tags geh\u00f6rt, ausgef\u00fchrt wird.<\/test><\/li>\n\n\n\n<li><test>@AfterTest &#8211; Die kommentierte Methode wird ausgef\u00fchrt, nachdem alle Testmethoden, die zu Klassen innerhalb des Tags geh\u00f6ren, ausgef\u00fchrt wurden.<\/test><\/li>\n\n\n\n<li>@BeforeMethod &#8211; Die annotierte Methode wird vor jeder mit @Test annotierten Testmethode ausgef\u00fchrt.<\/li>\n\n\n\n<li>@AfterMethod &#8211; Die annotierte Methode wird nach jeder mit @Test annotierten Testmethode ausgef\u00fchrt.<\/li>\n\n\n\n<li>@DataProvider &#8211; Die Annotation @DataProvider wird verwendet, um Testdaten an die Testmethode zu \u00fcbergeben. Die Testmethode wird durch die Anzahl der Datenzeilen ausgel\u00f6st, die durch die Methode des Datenanbieters \u00fcbergeben werden.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Frage 8. Wie lautet die Reihenfolge der Ausf\u00fchrung der Testmethode auf der Grundlage der verschiedenen Anmerkungen?<\/h2>\n\n<p>Antwort: Testmethoden in TestNG werden in der Reihenfolge Suite-&gt;Test-&gt;Klasse-&gt;Methode in Kombination mit der Reihenfolge Vor den Anmerkungen-&gt;Test-Anmerkungen-&gt;Nach den Anmerkungen ausgef\u00fchrt. Die Reihenfolge der Ausf\u00fchrung ist also wie folgt:<\/p>\n\n<p>@BeforeSuite<\/p>\n\n<p>@BeforeTest<\/p>\n\n<p>@BeforeClass<\/p>\n\n<p>@BeforeMethod<\/p>\n\n<p>@Test<\/p>\n\n<p>@NachMethode<\/p>\n\n<p>@AfterClass<\/p>\n\n<p>@AfterTest<\/p>\n\n<p>@AfterSuite<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 9. Welche g\u00e4ngigen Assertions bietet TestNG?<\/h2>\n\n<p>Antwort Einige der g\u00e4ngigen Behauptungen von TestNG lauten:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>assertEquals(String actual, String expected, String message) und andere \u00fcberladene Datentypen im Parameter<\/li>\n\n\n\n<li>assertNotEquals(double data1, double data2, String message) und andere \u00fcberladene Datentypen im Parameter<\/li>\n\n\n\n<li>assertFalse(boolesche Bedingung, String message)<\/li>\n\n\n\n<li>assertTrue(boolesche Bedingung, String message)<\/li>\n\n\n\n<li>assertNotNull(Object object)<\/li>\n\n\n\n<li>fail(boolesche Bedingung, String message)<\/li>\n\n\n\n<li>true(String Nachricht)<\/li>\n<\/ol>\n\n<h2 class=\"wp-block-heading\">Frage 10. Wie k\u00f6nnen wir die Ausf\u00fchrung eines Testfalls deaktivieren oder verhindern?<\/h2>\n\n<p>Antwort: Indem wir das Attribut &#8222;enabled&#8220; auf false setzen, k\u00f6nnen wir die Ausf\u00fchrung der Testmethode deaktivieren.<\/p>\n\n<pre class=\"wp-block-code\"><code>\/\/V pr\u00edpade testovacej met\u00f3dy\n\n@Test(enabled = false)\n\npublic void testMethod1() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}\n\n\/\/V pr\u00edpade testovacej met\u00f3dy patriacej do skupiny\n\n@Test(groups = {\"NegativeTests\"}, enabled = false)\n\npublic void testMethod2() {\n\n&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 11. Wie k\u00f6nnen wir TestNG verwenden, um eine Testmethode von einer anderen abh\u00e4ngig zu machen?<\/h2>\n\n<p>A: Mit dem Parameter dependsOnMethods in der @Test-Annotation in TestNG k\u00f6nnen wir eine Testmethode erst dann ausf\u00fchren lassen, wenn die abh\u00e4ngige Testmethode erfolgreich ausgef\u00fchrt wurde.<\/p>\n\n<p><strong>  @Test(dependsOnMethods = { &#8222;preTests&#8220; })<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 12. Wie k\u00f6nnen wir die Priorit\u00e4t von Testf\u00e4llen in TestNG festlegen?<\/h2>\n\n<p>A: Wir k\u00f6nnen die Priorit\u00e4t von Testf\u00e4llen mit dem Parameter &#8222;priority&#8220; in der @Test-Annotation festlegen. Tests mit niedrigeren Priorit\u00e4tswerten werden zuerst durchgef\u00fchrt. Beispiel:<\/p>\n\n<p><strong>@Test(Priorit\u00e4t=1)<\/strong><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 13. Was ist die Standardpriorit\u00e4t f\u00fcr Testf\u00e4lle in TestNG?<\/h2>\n\n<p>A: Die Standard-Testpriorit\u00e4t ist, wenn nicht angegeben, der ganzzahlige Wert 0. Wenn wir also einen Testfall mit Priorit\u00e4t 1 und einen ohne Priorit\u00e4t haben, dann wird der Test ohne Priorit\u00e4tswert zuerst ausgef\u00fchrt (da der Standardwert 0 ist und die Tests mit niedrigerer Priorit\u00e4t zuerst ausgef\u00fchrt werden).<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 14. Wie k\u00f6nnen wir eine Testmethode mehrere Male in einem Zyklus ausf\u00fchren (ohne einen Datenanbieter zu verwenden)?<\/h2>\n\n<p>A: Wenn Sie den Parameter invocationCount verwenden und seinen Wert auf einen ganzzahligen Wert setzen, wird die Testmethode n Mal in einem Zyklus ausgef\u00fchrt.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test(invocationCount = 10)\n\npublic void invocationCountTest(){\n\n&nbsp;&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Fragen 15. Was ist threadPoolSize? Wie k\u00f6nnen wir sie nutzen?<\/h2>\n\n<p>Antwort: Das Attribut threadPoolSize gibt die Anzahl der Threads an, die der Testmethode zugewiesen werden sollen. Es wird in Verbindung mit dem Attribut invocationCount verwendet. Die Anzahl der Threads wird durch die Anzahl der Iterationen der im Attribut invocationCount angegebenen Testmethode geteilt.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test(threadPoolSize = 5, invocationCount = 10)\n\npublic void threadPoolTest(){\n\n&nbsp;&nbsp;&nbsp;\/\/Testovacia logika\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Frage 16. Was ist der Unterschied zwischen Soft Assertion und Hard Assertion in TestNG?<\/h2>\n\n<p>Antwort: Dies ist eine der am h\u00e4ufigsten gestellten Fragen in einem TestNG-Interview. Soft Assertions (SoftAssert) erm\u00f6glichen es uns, mehrere Assertions innerhalb einer Testmethode zu haben. Selbst wenn eine Assertion fehlschl\u00e4gt, f\u00fchrt die Testmethode den Rest des Tests weiter aus. Das Ergebnis aller Behauptungen k\u00f6nnen Sie am Ende mit der Methode softAssert.assertAll() zusammenfassen.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test\n\npublic void softAssertionTest(){\n\n&nbsp;&nbsp;&nbsp;SoftAssert softAssert= new SoftAssert();\n\n&nbsp;&nbsp;&nbsp;\/\/Assertion failing\n\n&nbsp;&nbsp;&nbsp;softAssert.fail();\n\n&nbsp;&nbsp;&nbsp;System.out.println(\"Failing\");\n\n&nbsp;&nbsp;&nbsp;\/\/Assertion passing\n\n&nbsp;&nbsp;&nbsp;softAssert.assertEquals(1, 1);\n\n&nbsp;&nbsp;&nbsp;System.out.println(\"Passing\");\n\n&nbsp;&nbsp;&nbsp;\/\/Collates test results and marks them pass or fail\n\n&nbsp;&nbsp;&nbsp;softAssert.assertAll();\n\n}<\/code><\/pre>\n\n<p>Selbst wenn die erste Behauptung fehlschl\u00e4gt, wird der Test weiter ausgef\u00fchrt und eine Meldung unter der zweiten Behauptung ausgegeben.<\/p>\n\n<p>Harte Assertions hingegen sind die \u00fcblichen Assertions, die von TestNG bereitgestellt werden. Bei einer Hard Assertion wird im Falle eines Fehlers die Ausf\u00fchrung des Tests gestoppt, so dass keine weiteren Schritte der Testmethode durchgef\u00fchrt werden k\u00f6nnen.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 17. Wie kann ein Test in testNG fehlschlagen, wenn er nicht in der vorgegebenen Zeit durchgef\u00fchrt wird?<\/h2>\n\n<p>Antwort: Wir k\u00f6nnen das Attribut timeOut der @Test-Anmerkung verwenden. Der diesem timeOut-Attribut zugewiesene Wert dient als Obergrenze. Wenn der Test nicht innerhalb dieses Zeitrahmens ausgef\u00fchrt wird, schl\u00e4gt er fehl, abgesehen von der Zeit\u00fcberschreitung.<\/p>\n\n<pre class=\"wp-block-code\"><code>@Test(timeOut = 1000)\n\npublic void timeOutTest() throws InterruptedException {\n\n&nbsp;&nbsp;&nbsp;\/\/Sleep for 2sec so that test will fail\n\n&nbsp;&nbsp;&nbsp;Thread.sleep(2000);\n\n&nbsp;&nbsp;&nbsp;System.out.println(\"Will throw Timeout exception!\");\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 18. Wie k\u00f6nnen wir einen Testfall bedingungslos auslassen?<\/h2>\n\n<p>A: Wir k\u00f6nnen einen Testfall mit der Funktion SkipException bedingt \u00fcberspringen. Wenn eine skipException ausgel\u00f6st wird, wird die Testmethode im Testausf\u00fchrungsbericht als \u00fcbersprungen markiert und keine Anweisung wird ausgef\u00fchrt, nachdem die Ausnahme ausgel\u00f6st wurde.<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>@Test\n\npublic void testMethod(){\n\n&nbsp;&nbsp;if(conditionToCheckForSkippingTest)\n\n&nbsp;throw new SkipException(\"Skipping the test\");\n\n&nbsp;&nbsp;\/\/test logic\n\n}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Frage 19. Wie k\u00f6nnen wir sicherstellen, dass eine Testmethode auch dann ausgef\u00fchrt wird, wenn die Testmethoden oder Gruppen, von denen sie abh\u00e4ngt, fehlschlagen oder \u00fcbersprungen werden?<\/h2>\n\n<p>A: Mit dem Attribut &#8222;alwaysRun&#8220; der @Test-Annotation k\u00f6nnen wir sicherstellen, dass die Testmethode auch dann ausgef\u00fchrt wird, wenn die von ihr abh\u00e4ngigen Testmethoden oder -gruppen fehlschlagen oder \u00fcbersprungen werden.<\/p>\n\n<pre class=\"wp-block-code\"><code>@Test\n\npublic void parentTest() {&nbsp;\n\n&nbsp;&nbsp;Assert.fail(\"Failed test\");\n\n}\n\n@Test(dependsOnMethods={\"parentTest\"}, alwaysRun=true)&nbsp;\n\npublic void dependentTest() {&nbsp;\n\n&nbsp;&nbsp;System.out.println(\"Running even if parent test failed\");\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<p>Selbst wenn parentTest fehlschl\u00e4gt, wird dependentTest nicht \u00fcbersprungen, sondern aufgrund von &#8222;alwaysRun=true&#8220; ausgef\u00fchrt. Wenn wir das Attribut &#8222;alwaysRun=true&#8220; aus @Test entfernen, zeigt der Bericht einen Fehlschlag und einen \u00fcbersprungenen Test an, ohne zu versuchen, die Methode dependentTest auszuf\u00fchren.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 20. Wie k\u00f6nnen wir mit TestNG einen Testparameter an ein Skript \u00fcbergeben?<\/h2>\n\n<p>A: Mit der Annotation @Parameter und dem Tag &#8222;parameter&#8220; in testng.xml k\u00f6nnen wir Parameter an die Testskripte \u00fcbergeben.<\/p>\n\n<p>Beispiel testng.xml:<\/p>\n\n<p><\/p>\n\n<pre class=\"wp-block-code\"><code>&lt;suite name=\"sampleTestSuite\"&gt;\n\n&nbsp;&nbsp;&nbsp;&lt;test name=\"sampleTest\"&gt;&nbsp;&nbsp;&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;parameter name=\"sampleParamName\" value=\"sampleParamValue\"\/&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class name=\"TestFile\" \/&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/classes&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n\n&nbsp;&nbsp;&nbsp;&lt;\/test&gt;\n\n&lt;\/suite&gt;\n\nUk\u00e1\u017eka testovacieho skriptu \u2013\n\npublic class TestFile {\n\n&nbsp;&nbsp;&nbsp;@Test\n\n&nbsp;&nbsp;&nbsp;@Parameters(\"sampleParamName\")\n\n&nbsp;&nbsp;&nbsp;public void parameterTest(String paramValue) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(\"Value of sampleParamName is - \" + sampleParamName);\n\n&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Frage 21. Wie k\u00f6nnen wir mit TestNG ein datengesteuertes Framework erstellen?<\/h2>\n\n<p>A: Mit @DataProvider k\u00f6nnen wir ein datengesteuertes Framework erstellen, in dem Daten an die entsprechende Testmethode \u00fcbergeben werden und mehrere Iterationen des Tests f\u00fcr verschiedene Werte der von der @DataProvider-Methode \u00fcbergebenen Testdaten ausgef\u00fchrt werden. Die mit der @DataProvider-Annotation versehene Methode gibt ein 2D-Array des Objekts zur\u00fcck.<\/p>\n\n<pre class=\"wp-block-code\"><code>\/\/Data provider returning 2D array of 3*2 matrix\n\n&nbsp;@DataProvider(name = \"dataProvider1\")\n\n&nbsp;&nbsp;&nbsp;public Object&#091;]&#091;] dataProviderMethod1() {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Object&#091;]&#091;] {{\"kuldeep\",\"rana\"}, {\"k1\",\"r1\"},{\"k2\",\"r2\"}};\n\n&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;\/\/This method is bound to the above data provider returning 2D array of 3*2 matrix\n\n&nbsp;&nbsp;&nbsp;\/\/The test case will run 3 times with different set of values\n\n&nbsp;&nbsp;&nbsp;@Test(dataProvider = \"dataProvider1\")\n\n&nbsp;&nbsp;&nbsp;public void sampleTest(String s1, String s2) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s1 + \" \" + s2);\n\n&nbsp;&nbsp;&nbsp;}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 22. Was ist die Verwendung der @Listener-Annotation in TestNG?<\/h2>\n\n<p>Antwort: TestNG bietet uns verschiedene Arten von Listenern, mit denen wir eine Aktion ausf\u00fchren k\u00f6nnen, wenn ein Ereignis ausgel\u00f6st wird. Normalerweise werden TestNG-Listener verwendet, um Berichte und Protokollierung zu konfigurieren. Einer der am h\u00e4ufigsten verwendeten Listener in testNG ist die Schnittstelle ITestListener. Es hat Methoden wie onTestSuccess, onTestFailure, onTestSkipped usw. Wir m\u00fcssen diese Schnittstelle implementieren, indem wir unsere eigene Listener-Klasse erstellen. Dann k\u00f6nnen wir mit der @Listener-Annotation die Spezifikation verwenden, dass unsere benutzerdefinierte Listener-Klasse f\u00fcr eine bestimmte Testklasse verwendet werden soll.<\/p>\n\n<pre class=\"wp-block-code\"><code>@Listeners(PackageName.CustomizedListenerClassName.class)\n\npublic class TestClass {&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;WebDriver driver= new FirefoxDriver();@Test&nbsp;\n\n&nbsp;&nbsp;&nbsp;&nbsp;public void testMethod(){\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/testovacia logika\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 23. Was ist die Verwendung der @Factory-Annotation in TestNG?<\/h2>\n\n<p>Antwort: Die Annotation @Factory hilft bei der dynamischen Ausf\u00fchrung von Testf\u00e4llen. Mit der Annotation @Factory k\u00f6nnen wir der gesamten Testklasse zur Laufzeit Parameter \u00fcbergeben. Die \u00fcbergebenen Parameter k\u00f6nnen von einer oder mehreren Testmethoden dieser Klasse verwendet werden.<\/p>\n\n<p>Ein Beispiel: Es gibt zwei Klassen &#8211; TestClass und TestFactory. Dank der @Factory-Annotation werden die Testmethoden in der Klasse TestClass zweimal mit den Eintr\u00e4gen &#8222;k1&#8220; und &#8222;k2&#8220; ausgef\u00fchrt<\/p>\n\n<pre class=\"wp-block-code\"><code>public class TestClass{\n\n&nbsp;&nbsp;&nbsp;&nbsp;private String str;\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/Constructor\n\n&nbsp;&nbsp;&nbsp;&nbsp;public TestClass(String str) {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.str = str;\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;@Test\n\n&nbsp;&nbsp;&nbsp;&nbsp;public void TestMethod() {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}\n\npublic class TestFactory{\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/The test methods in class TestClass will run twice with data \"k1\" and \"k2\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;@Factory\n\n&nbsp;&nbsp;&nbsp;&nbsp;public Object&#091;] factoryMethod() {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Object&#091;] { new TestClass(\"K1\"), new TestClass(\"k2\") };\n\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n}<\/code><\/pre>\n\n<p><\/p>\n\n<h2 class=\"wp-block-heading\">Frage 24. Was ist der Unterschied zwischen den Annotationen @Factory und @DataProvider?<\/h2>\n\n<p>Antwort: Die Methode @Factory erstellt eine Instanz einer Testklasse und f\u00fchrt alle Testmethoden in dieser Klasse mit einem anderen Datensatz aus.<\/p>\n\n<p>W\u00e4hrend @DataProvider sich an einzelne Testmethoden bindet und bestimmte Methoden mehrfach ausf\u00fchrt.<\/p>\n\n<h2 class=\"wp-block-heading\">Frage 25. Wie k\u00f6nnen wir TestNG verwenden, um Testf\u00e4lle parallel auszuf\u00fchren?<\/h2>\n\n<p>Antwort: Um Tests parallel laufen zu lassen, f\u00fcgen Sie einfach diese beiden Schl\u00fcssel-Wert-Paare zum Suite-Tag in der Datei testng.xml- hinzu<\/p>\n\n<ul class=\"wp-block-list\">\n<li>parallel=&#8220;{methods\/tests\/classes}&#8220;<\/li>\n\n\n\n<li>thread-count=&#8220;{Anzahl der Threads, die gleichzeitig laufen sollen}&#8220;.<\/li>\n<\/ul>\n\n<p><strong>&lt;suite name=&#8220;ITtester&#8220; parallel=&#8220;Methoden&#8220; thread-count=&#8220;5&#8243;&gt;<\/strong><\/p>\n\n<p>Damit ist unsere umfassende Liste der TestNG-Interviewfragen abgeschlossen. Wenn Sie mehr \u00fcber TestNG erfahren m\u00f6chten, k\u00f6nnen Sie sich auch unser vollst\u00e4ndiges &#8211; TestNG Tutorial ansehen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Leitfaden haben wir die am h\u00e4ufigsten gestellten Fragen und die Antworten auf Interviews sowohl f\u00fcr Neulinge als auch f\u00fcr erfahrene Tester zusammengestellt.<\/p>\n","protected":false},"author":8,"featured_media":1743,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[19],"tags":[],"class_list":["post-1730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vorstellungsgesprach-fragen"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/1730","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=1730"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/1730\/revisions"}],"predecessor-version":[{"id":1741,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/1730\/revisions\/1741"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media\/1743"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media?parent=1730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/categories?post=1730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/tags?post=1730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}