Inleiding tot luisteraars in TestNG

Voordat we luisteraars in TestNG eerst begrijpen, zullen we luisteraars en TestNG afzonderlijk bestuderen. Er zijn momenten waarop we het gedrag van TestNG in onze applicatie willen wijzigen en dit kan worden gedaan door Interfaces. Deze interfaces die de gebruiker helpen om dit te doen, staan ​​bekend als luisteraars. Zoals de naam al doet vermoeden, is de primaire taak van 'luisteraars' om te luisteren naar een gedefinieerde gebeurtenis en daarop te reageren. Het belangrijkste doel waarvoor luisteraars door de programmeurs worden gebruikt, is het maken van logboeken en aangepaste rapporten volgens het specifieke scenario dat is gedefinieerd.

Er zijn verschillende soorten luisteraars in TestNG en elke luisteraar dient zijn verschillende doel. Sommigen van hen worden hieronder vermeld:

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

Methoden van luisteraars in TestNG

Hoewel er veel luisteraars beschikbaar zijn in TestNG en elke luisteraar heeft specifieke methoden die worden overschreven. Laten we de 2 populairste luisteraars en de methoden bespreken die door hen worden genegeerd:

1. ITestListener

ITestListener is een van de meest gebruikte luisteraars in Selenium Webdriver. De programmeur moet eenvoudigweg de ITestListener-interface implementeren en alle methoden van deze interface overschrijven om deze te kunnen gebruiken. Het belt voor en na elke test in de suite. Er zijn verschillende methoden die hieronder worden vermeld:

  • onStart: dit is de eerste en belangrijkste methode die wordt aangeroepen nadat de testklasse is geïnstantieerd. Het kan ook worden gebruikt om de map op te halen waaruit de test wordt uitgevoerd.
  • onFinish: dit is de laatste methode die wordt aangeroepen nadat alle overschreven methoden zijn uitgevoerd.
  • onTestStart (ITestResult-resultaat): deze methode wordt elke keer vóór een nieuwe testmethode aangeroepen. Het geeft aan dat een vereiste testmethode is gestart.
  • onTestFailure (ITestResult-resultaat): deze methode wordt aangeroepen wanneer een testmethode is mislukt, omdat deze de fouten van de test aangeeft. We kunnen bepaalde taken uitvoeren bij het falen van een test, zoals het maken van een screenshot wanneer een bepaalde test faalt om een ​​dieper inzicht in het falen te krijgen.
  • onTestSkipped (ITestResult-resultaat): deze methode wordt aangeroepen wanneer een testmethode wordt overgeslagen voor uitvoering.
  • onTestSuccess (ITestResult-resultaat): deze methode wordt opgeroepen wanneer een bepaalde testmethode met succes wordt uitgevoerd. De programmeur kan elke gewenste bewerking op het succes van de testmethode uitvoeren door code in deze methode te schrijven.
  • onTestFailedButWithinSuccessPercentage (ITestResult-resultaat): deze methode wordt aangeroepen wanneer een testmethode is mislukt met een bepaald succespercentage. Dit is bijvoorbeeld het geval als een testmethode 10 keer wordt uitgevoerd en 5 keer is mislukt. Er zijn 2 parameters nodig, namelijk successPercentage en invocationCount. In het bovenstaande geval zou successPercentage 50 zijn en het invocationCount 10.

2. ISuiteListener

In tegenstelling tot de ITestListener, die na elke testmethode wordt geïmplementeerd, wordt ISuiteListener op Suite-niveau geïmplementeerd. Het heeft twee methoden die worden opgeheven:

  • onStart: deze methode wordt geïmplementeerd voordat de testsuite wordt aangeroepen, wat betekent dat alle code die erin wordt geschreven, wordt uitgevoerd voordat een suite wordt gestart.
  • onFinish: deze methode wordt geïmplementeerd na de aanroep van de testsuite, wat betekent dat alle code die erin is geschreven, wordt uitgevoerd nadat de hele testsuite is uitgevoerd.

Hoe luisteraars te creëren in TestNG?

Er zijn in principe 2 manieren om luisteraars te creëren in TestNG:

1. We kunnen de @Listeners-interface binnen de klasse gebruiken.

Stap 1: De eerste en belangrijkste stap is het creëren van een klasse voor Listener die ITestListener implementeert en alle hierboven beschreven methoden overschrijft.

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());
)
)

Stap 2: Vervolgens moeten we de bovenstaande luisteraar in het normale Java-aanmeldingsprogramma implementeren in een toepassing met de methoden @test met annotatie met @Listeners.

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);
)
)

Stap 3: Nu kunnen we een vermelding van de klasse toevoegen aan het XML-bestand zoals hieronder wordt weergegeven:

Code:





Output:

2. We kunnen add Listeners rechtstreeks in het XML-bestand gebruiken.

Hoewel de bovenstaande benadering van het toevoegen van de @listeners in specifiek klaswerk in een suite met zoveel klassen, wordt het niet als een mooie benadering beschouwd om de luisteraar aan elke klasse toe te voegen. In plaats daarvan kunnen we de invoer van luisteraars en klassen in het XML-bestand maken.

Stap 1: Aanmaken van een Listener-klasse in Java die ITestListener implementeert en de methoden ervan vervangt, vergelijkbaar met die hierboven vermeld.

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());
)
)

Stap 2: Vervolgens moeten we een normaal Java-aanmeldingsprogramma maken in een toepassing met alle @test-methoden en is het niet nodig om annotaties bij @Listeners te gebruiken.

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);
)
)

Stap 3: Nu kunnen we een vermelding van de luisteraar en klasse toevoegen aan het XML-bestand zoals hieronder wordt weergegeven:

Code:







Output:

Conclusie

Bovenstaande beschrijving van luisteraars geeft duidelijk het basiskennis van luisteraars en hoe ze zijn geïmplementeerd in het Java-programma om de logboeken en rapporten aan te passen. Voordat u een luisteraar gebruikt, is een duidelijk begrip vereist van alle luisteraars en de specifieke scenario's waarin ze moeten worden gebruikt, samen met de methoden die ze overschrijven.

Aanbevolen artikelen

Dit is een gids voor luisteraars in TestNG. Hier bespreken we methoden van luisteraars in TestNG en twee manieren om luisteraars te creëren in TestNG. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie-

  1. Installeer TestNG
  2. AngularJS-evenementen
  3. Wat is XPath?
  4. Testkaders voor Java
  5. Java-annotaties
  6. Overschrijven in Java