Einführung in Listener in TestNG

Bevor wir zuerst die Listener in TestNG verstehen, werden wir Listener und TestNG getrennt untersuchen. Es gibt Zeiten, in denen wir das Verhalten von TestNG in unserer Anwendung ändern möchten. Dies kann über Schnittstellen erfolgen. Diese Schnittstellen, die dem Benutzer dabei helfen, werden als Listener bezeichnet. Wie der Name schon sagt, besteht die Hauptaufgabe der Zuhörer darin, ein definiertes Ereignis anzuhören und danach zu reagieren. Der Hauptzweck, für den Listener von den Programmierern verwendet werden, besteht darin, Protokolle zu erstellen und die benutzerdefinierten Berichte gemäß dem festgelegten Szenario zu erstellen.

Es gibt verschiedene Arten von Listenern in TestNG und jeder Listener erfüllt seinen eigenen Zweck. Einige von ihnen sind nachfolgend aufgeführt:

  1. IConfigurable
  2. IAnnotationTransformer
  3. IHookable
  4. IReporter
  5. ISuiteListener

Methoden der Zuhörer in TestNG

Obwohl es in TestNG viele Listener gibt und jeder Listener über bestimmte Methoden verfügt, die überschrieben werden. Lassen Sie uns die 2 beliebtesten Hörer und die Methoden diskutieren, die von ihnen überschrieben werden:

1. ITestListener

ITestListener ist einer der am häufigsten verwendeten Listener in Selenium Webdriver. Der Programmierer muss lediglich die ITestListener-Schnittstelle implementieren und alle Methoden dieser Schnittstelle überschreiben, um sie zu verwenden. Der Anruf wird vor und nach jedem Test in der Suite getätigt. Es gibt verschiedene Methoden, die im Folgenden erwähnt werden:

  • onStart: Dies ist die erste und wichtigste Methode, die aufgerufen wird, nachdem die Testklasse instanziiert wurde. Es kann auch verwendet werden, um das Verzeichnis abzurufen, aus dem der Test ausgeführt wird.
  • onFinish: Dies ist die letzte Methode, die aufgerufen wird, nachdem alle überschriebenen Methoden ausgeführt wurden.
  • onTestStart (ITestResult-Ergebnis): Diese Methode wird jedes Mal vor einer neuen Testmethode aufgerufen. Es zeigt an, dass eine erforderliche Testmethode gestartet wurde.
  • onTestFailure (ITestResult-Ergebnis): Diese Methode wird aufgerufen, wenn eine Testmethode fehlgeschlagen ist, da sie die Fehler des Tests anzeigt. Wir können bestimmte Aufgaben ausführen, wenn ein Test fehlschlägt, z. B. den Screenshot erstellen, wenn ein bestimmter Test fehlschlägt, um einen tieferen Einblick in den Fehler zu erhalten.
  • onTestSkipped (ITestResult-Ergebnis): Diese Methode wird aufgerufen, wenn eine Testmethode zur Ausführung übersprungen wird.
  • onTestSuccess (ITestResult-Ergebnis): Diese Methode wird aufgerufen, wenn eine bestimmte Testmethode erfolgreich ausgeführt wurde. Der Programmierer kann jede gewünschte Operation bei erfolgreicher Testmethode ausführen, indem er Code in diese Methode schreibt.
  • onTestFailedButWithinSuccessPercentage (ITestResult-Ergebnis): Diese Methode wird aufgerufen, wenn eine Testmethode mit einem bestimmten Erfolgsprozentsatz fehlgeschlagen ist. Dies ist beispielsweise der Fall, wenn eine Testmethode zehnmal ausgeführt wurde und fünfmal fehlgeschlagen ist. Es werden zwei Parameter benötigt, successPercentage und invocationCount. In diesem Fall wäre successPercentage 50 und invocationCount 10.

2. ISuiteListener

Im Gegensatz zum ITestListener, der nach jeder Testmethode implementiert wird, wird ISuiteListener auf Suite-Ebene implementiert. Es gibt zwei Methoden, die überschrieben werden:

  • onStart: Diese Methode wird vor dem Aufruf der Testsuite implementiert. Dies bedeutet, dass der gesamte darin geschriebene Code vor dem Start einer Suite ausgeführt wird.
  • onFinish: Diese Methode wird nach dem Aufruf der Testsuite implementiert. Dies bedeutet, dass der gesamte darin geschriebene Code ausgeführt wird, nachdem die gesamte Testsuite ausgeführt wurde.

Wie erstelle ich Listener in TestNG?

Grundsätzlich gibt es zwei Möglichkeiten, Listener in TestNG zu erstellen:

1. Wir können die @ Listeners-Schnittstelle innerhalb der Klasse verwenden.

Schritt 1: Der erste und wichtigste Schritt besteht darin, eine Klasse für Listener zu erstellen, die ITestListener implementiert und alle oben erläuterten Methoden außer Kraft setzt.

Klasse: TestListener.java

Code:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Schritt 2: Als nächstes müssen wir den obigen Listener in das normale Java-Anmeldeprogramm einer Anwendung mit den @ test-Methoden unter Verwendung der @ Listeners-Annotation implementieren.

Klasse: Testing.java

Code:

package Demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners(Demo.TestListener.class)
public class Testing
(
String driverPath =
"C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass .
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Schritt 3: Nun können wir einen Eintrag der Klasse in die XML-Datei einfügen, wie unten angegeben:

Code:





Ausgabe:

2. Wir können "Listener hinzufügen" direkt in der XML-Datei verwenden.

Obwohl der obige Ansatz, die @listener in einer bestimmten Klassenarbeit in einer Suite mit so vielen Klassen hinzuzufügen, nicht als ein guter Ansatz angesehen wird, den Listener jeder Klasse hinzuzufügen. Stattdessen können wir den Eintrag Listener und Klassen in der XML-Datei erstellen.

Schritt 1: Erstellen einer Listener-Klasse in Java, in der der ITestListener implementiert wird, und Überschreiben der Methoden, die der oben genannten ähneln.

Klasse: TestListener.java

Code:

package Demo;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener
(
@Override
public void onTestStart(ITestResult res)
(
System.out.println("Started test case is "+ res.getName());
)
@Override
public void onStart(ITestContext res)
(
)
@Override
public void onFinish(ITestContext res)
(
)
// Run when the test case passed successfully
@Override
public void onTestSuccess(ITestResult res)
(
System.out.println("Test case passed is "+res.getName());
)
// Run when the test case fails
@Override
public void onTestFailure(ITestResult res)
(
System.out.println("Test case failed is "+res.getName());
)
// Run when test case pass with some failures
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult res)
(
System.out.println("Test case passed with failure is "+res.getName());
)
// Run when the test case is skipped
@Override
public void onTestSkipped(ITestResult res)
(
System.out.println("Test case skipped is :"+res.getName());
)
)

Schritt 2: Als nächstes müssen wir ein normales Java-Anmeldeprogramm in einer Anwendung erstellen, die alle @ test-Methoden enthält, und es ist nicht erforderlich, die @ Listeners-Annotation zu verwenden.

Klasse: Testing.java

Code:

package Demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
public class Testing
(
String driverPath = "C:\\Users\\username\\Downloads\\Compressed\\geckodriver.exe";
public WebDriver driver;
@BeforeMethod
public void startBrowser() (
System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
)
// Test case to login an application which will pass.
@Test
public void LoginMethod()
(
driver.get("http://testing-ground.scraping.pro/login"); driver.findElement(By.id("usr")).sendKeys("admin");
driver.findElement(By.id("pwd")).sendKeys("123");
driver.findElement(By.xpath("//*(@id=\"case_login\")/form/input(3)")).
click();
)
// Test case for failure in order to check the working of listener.
@Test
public void FailMethod()
(
System.out.println("Forcefully making the method to fail");
Assert.assertTrue(false);
)
)

Schritt 3: Jetzt können wir einen Eintrag des Listeners und der Klasse in die XML-Datei einfügen, wie unten angegeben:

Code:







Ausgabe:

Fazit

Die obige Beschreibung der Listener vermittelt ein klares Grundverständnis der Listener und zeigt, wie sie im Java-Programm implementiert sind, um die Protokolle und Berichte anzupassen. Bevor Sie einen Listener verwenden, müssen Sie alle Listener und die spezifischen Szenarien, in denen sie verwendet werden müssen, sowie die Methoden, die sie überschreiben, genau kennen.

Empfohlene Artikel

Dies ist eine Anleitung für Listener in TestNG. Hier werden die Methoden von Listenern in TestNG und zwei Möglichkeiten zum Erstellen von Listenern in TestNG erläutert. Sie können auch unsere anderen verwandten Artikel durchgehen, um mehr zu erfahren.

  1. Installieren Sie TestNG
  2. AngularJS-Ereignisse
  3. Was ist XPath?
  4. Testen von Frameworks für Java
  5. Java-Anmerkungen
  6. In Java überschreiben