Увод у слушатеље у ТестНГ-у
Пре него што прво разумемо слушатеље у ТестНГ-у, посебно ћемо проучити слушатеље и ТестНГ. Постоје случајеви када желимо да изменимо понашање ТестНГ-а у нашој апликацији и то могу да ураде интерфејси. Ова сучеља која кориснику помажу у томе су позната као Слушаоци. Као што име сугерира, основни задатак 'Слушатеља' је слушати дефинирани догађај и реагирати у складу с тим. Главна сврха коју програмери слушаоци користе су креирање дневника и креирање прилагођених извештаја у складу са дефинисаним сценаријем.
Постоје различите врсте слушалаца у ТестНГ-у и сваки слушалац служи различитој сврси. Неке од њих су наведене у наставку:
- ИЦонфигурабле
- ИАннотатионТрансформер
- ИХоокабле
- ИРепортер
- ИСуитеЛистенер
Методе слушалаца у ТестНГ-у
Иако је у ТестНГ-у доступно много слушалаца и сваки слушатељ има одређене методе које се прегласавају. Расправимо о 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: Сада можемо додати унос слушаоца и класе у КСМЛ датотеку попут оне дате доле:
Шифра:
Излаз:
Закључак
Изнад описа слушалаца јасно се даје основно разумевање слушалаца и како се они примењују у програму Јава да би прилагодили записе и извештаје. Пре употребе било ког слушатеља, потребно је јасно разумевање свих слушалаца и специфичних сценарија у којима их треба користити, као и методе које они прегласавају.
Препоручени чланци
Ово је водич за слушатеље у ТестНГ-у. Овде смо расправљали о методама слушалаца у ТестНГ-у и два начина да креирате слушатеље у ТестНГ-у. Можете и да прођете кроз наше друге сродне чланке да бисте сазнали више -
- Инсталирајте ТестНГ
- АнгуларЈС Евентс
- Шта је КСПатх?
- Тестирање оквира за Јава
- Јава напомене
- Превладавање у Јави