Увод у слушатеље у ТестНГ-у

Пре него што прво разумемо слушатеље у ТестНГ-у, посебно ћемо проучити слушатеље и ТестНГ. Постоје случајеви када желимо да изменимо понашање ТестНГ-а у нашој апликацији и то могу да ураде интерфејси. Ова сучеља која кориснику помажу у томе су позната као Слушаоци. Као што име сугерира, основни задатак 'Слушатеља' је слушати дефинирани догађај и реагирати у складу с тим. Главна сврха коју програмери слушаоци користе су креирање дневника и креирање прилагођених извештаја у складу са дефинисаним сценаријем.

Постоје различите врсте слушалаца у ТестНГ-у и сваки слушалац служи различитој сврси. Неке од њих су наведене у наставку:

  1. ИЦонфигурабле
  2. ИАннотатионТрансформер
  3. ИХоокабле
  4. ИРепортер
  5. ИСуитеЛистенер

Методе слушалаца у ТестНГ-у

Иако је у ТестНГ-у доступно много слушалаца и сваки слушатељ има одређене методе које се прегласавају. Расправимо о 2 најпопуларнија слушаоца и методама које их превладава:

1. ИТестЛистенер

ИТестЛистенер је један од најчешће коришћених слушаоца у Селениум Вебдривер-у. Програмер једноставно треба да имплементира ИТестЛистенер интерфејс и надјача све методе овог интерфејса да би га користио. Позива се пре и после сваког теста у апартману. Постоји неколико метода које су наведене у наставку:

  • онСтарт: Ово је прва и главна метода која се позива након примене тестне класе. Може се користити и за проналажење директорија из којег се тестирање изводи.
  • онФинисх: Ово је последња метода коју треба позвати након што се изврше сви поништени методи.
  • онТестСтарт (резултат ИТестРесулт): Ова метода се позива сваки пут пре било које нове методе испитивања. Указује да је покренута потребна метода испитивања.
  • онТестФаилуре (резултат ИТестРесулт): Ова метода се позива када било која метода испитивања није успела, јер указује на неуспјехе теста. Можемо обавити одређене задатке у случају неуспеха теста, као што је снимање екрана када одређени тест не успе како бисмо добили дубљи увид у неуспех.
  • онТестСкиппед (резултат ИТестРесулт): Ова метода се позива када је било која метода испитивања прескочена за извршење.
  • онТестСуццесс (резултат ИТестРесулт): Ова метода се позива када се успешно изврши одређена метода испитивања. Програмер може извршити било коју жељену операцију на успеху методе испитивања пишући код унутар ове методе.
  • онТестФаиледБутВитхинСуццессПерцентаге (резултат ИТестРесулт): Ова метода се позива када било који тест метода није успео с неким процентом успеха. На пример, представља случај, ако се било која метода испитивања изводи 10 пута, а неуспешно 5 пута. Потребна су 2 параметра, односно суццессПерцентаге и инвоцатионЦоунт. У горњем случају, суццессПерцентаге би био 50, а рачун инвоцатион би био 10.

2. ИСуитеЛистенер

За разлику од ИТестЛистенер-а, који се имплементира након сваке методе испитивања, ИСуитеЛистенер се имплементира на нивоу Суите. Има две методе које су превазиђене:

  • онСтарт: Ова метода се имплементира пре позива на тестни пакет, што значи да се сав код уписан у њу покреће пре почетка било ког скупа.
  • онФинисх: Ова метода се имплементира након позива тестног скупа, што значи да се сав код уписан у њу покреће након покретања читавог тестног скупа.

Како створити слушатеље у ТестНГ-у?

У основи постоје 2 начина креирања слушалаца у ТестНГ-у:

1. Можемо користити интерфејс @Листенерс унутар класе.

1. корак: Први и најважнији корак је креирање класе за Листенер која имплементира ИТестЛистенер и надјачава све његове методе које су горе објашњене.

Класа: ТестЛистенер.јава

Шифра:

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

Корак 2: Затим морамо имплементирати горњи Листенер у уобичајени Јава програм за пријављивање у апликацији која има @тест методе користећи @Листенерс напомену.

Класа: Тестинг.јава

Шифра:

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

Корак 3: Сада можемо додати унос класе у КСМЛ датотеку попут оне дате доле:

Шифра:





Излаз:

2. Можемо директно да додамо Листенерс у КСМЛ датотеку.

Иако горњи приступ додавања @листенерс-а у специфичне разредне задатке у скупу који има толико часова, не сматра се лепим приступом додавање слушаоца у сваку класу. Уместо тога, можемо створити унос слушатеља и класа у КСМЛ датотеку.

Корак 1: Креирање класе слушатеља у Јави која имплементира ИТестЛистенер и прегласавање његових метода сличних горе поменутом.

Класа: ТестЛистенер.јава

Шифра:

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

Корак 2: Затим морамо креирати нормалан Јава програм за пријаву у апликацији која има све @тест методе и нема потребе за коришћењем напомена @Листенерс.

Класа: Тестинг.јава

Шифра:

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

Корак 3: Сада можемо додати унос слушаоца и класе у КСМЛ датотеку попут оне дате доле:

Шифра:







Излаз:

Закључак

Изнад описа слушалаца јасно се даје основно разумевање слушалаца и како се они примењују у програму Јава да би прилагодили записе и извештаје. Пре употребе било ког слушатеља, потребно је јасно разумевање свих слушалаца и специфичних сценарија у којима их треба користити, као и методе које они прегласавају.

Препоручени чланци

Ово је водич за слушатеље у ТестНГ-у. Овде смо расправљали о методама слушалаца у ТестНГ-у и два начина да креирате слушатеље у ТестНГ-у. Можете и да прођете кроз наше друге сродне чланке да бисте сазнали више -

  1. Инсталирајте ТестНГ
  2. АнгуларЈС Евентс
  3. Шта је КСПатх?
  4. Тестирање оквира за Јава
  5. Јава напомене
  6. Превладавање у Јави

Категорија: