Wprowadzenie do słuchaczy w TestNG

Zanim najpierw zrozumiemy nasłuchiwanie w TestNG, przestudiujemy osobno nasłuchiwanie i testNG. Są chwile, kiedy chcemy zmodyfikować zachowanie TestNG w naszej aplikacji i można tego dokonać za pomocą interfejsów. Te interfejsy, które pomagają użytkownikowi to zrobić, są znane jako nasłuchiwacze. Jak sama nazwa wskazuje, podstawowym zadaniem „nasłuchujących” jest odsłuchanie zdefiniowanego zdarzenia i reakcja zgodnie z nim. Głównym celem, dla którego programiści używają nasłuchiwaczy, jest tworzenie dzienników i tworzenie raportów niestandardowych zgodnie ze zdefiniowanym scenariuszem.

W TestNG istnieją różne typy nasłuchiwaczy, a każdy słuchacz spełnia swoje inne zadanie. Niektóre z nich są wymienione poniżej:

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

Metody słuchaczy w teścieNG

Chociaż w TestNG dostępnych jest wiele detektorów, a każdy detektor ma określone metody, które są przesłonięte. Porozmawiajmy o 2 najpopularniejszych słuchaczach i nadpisanych przez nich metodach:

1. ITestListener

ITestListener jest jednym z najczęściej używanych odbiorników w Selenium Webdriver. Programista musi po prostu zaimplementować interfejs ITestListener i zastąpić wszystkie metody tego interfejsu, aby z niego skorzystać. Wykonuje połączenie przed i po każdym teście obecnym w pakiecie. Istnieje kilka metod wymienionych poniżej:

  • onStart: jest to pierwsza i najważniejsza metoda wywoływana po utworzeniu instancji klasy testowej. Można go również użyć do pobrania katalogu, z którego uruchomiony jest test.
  • onFinish: jest to ostatnia metoda wywoływana po wykonaniu wszystkich zastąpionych metod.
  • onTestStart (wynik ITestResult): Ta metoda jest wywoływana za każdym razem przed każdą nową metodą testową. Wskazuje, że uruchomiono wymaganą metodę testową.
  • onTestFailure (wynik ITestResult): Ta metoda jest wywoływana, gdy jakakolwiek metoda testowa zawiedzie, ponieważ wskazuje ona na niepowodzenia testu. Możemy wykonać pewne zadania w przypadku niepowodzenia testu, takie jak wykonanie zrzutu ekranu, gdy dany test się nie powiedzie, aby uzyskać głębszy wgląd w niepowodzenie.
  • onTestSkipped (wynik ITestResult): Ta metoda jest wywoływana, gdy jakakolwiek metoda testowa jest pomijana w celu wykonania.
  • onTestSuccess (wynik ITestResult): Ta metoda jest wywoływana, gdy konkretna metoda testowa zostanie pomyślnie wykonana. Programista może wykonać dowolną pożądaną operację powodzenia metody testowej, pisząc kod w tej metodzie.
  • onTestFailedButWithinSuccessPercentage (wynik ITestResult): Ta metoda jest wywoływana, gdy jakakolwiek metoda testowa zakończy się niepowodzeniem z pewnym procentem powodzenia. Na przykład reprezentuje przypadek, jeśli jakakolwiek metoda testowa jest wykonywana 10 razy, a nieudana 5 razy. Wymaga 2 parametrów, tj. SuccessPercentage i invocationCount. W powyższym przypadku wartość SuccessPercentage wynosiłaby 50, a wartość invocationCount wynosiłaby 10.

2. ISuiteListener

W przeciwieństwie do ITestListener, który jest implementowany po każdej metodzie testowej, ISuiteListener jest implementowany na poziomie Suite. Ma dwie metody, które są przesłonięte:

  • onStart: Ta metoda jest implementowana przed wywołaniem pakietu testowego, co oznacza, że ​​cały kod w nim zapisany jest uruchamiany przed uruchomieniem dowolnego pakietu.
  • onFinish: Ta metoda jest implementowana po wywołaniu zestawu testów, co oznacza, że ​​cały kod zapisany w nim jest uruchamiany po uruchomieniu całego zestawu testów.

Jak tworzyć nasłuchiwacze w TestNG?

Istnieją zasadniczo 2 sposoby tworzenia nasłuchiwaczy w TestNG:

1. Możemy używać interfejsu @Listeners w klasie.

Krok 1: Pierwszym i najważniejszym krokiem jest utworzenie klasy dla Listener, która implementuje ITestListener i zastępuje wszystkie metody wyjaśnione powyżej.

Klasa: TestListener.java

Kod:

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

Krok 2: Następnie musimy zaimplementować powyższy Listener w normalnym programie Java logowania do aplikacji korzystającej z metod @test przy użyciu adnotacji @Listeners.

Klasa: Testing.java

Kod:

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

Krok 3: Teraz możemy dodać pozycję klasy w pliku XML, taką jak ta podana poniżej:

Kod:





Wynik:

2. Możemy użyć dodania nasłuchiwania bezpośrednio w pliku XML.

Chociaż powyższe podejście polegające na dodawaniu @listenerów do określonych zajęć w pakiecie posiadającym tak wiele klas, nie jest uważane za miłe podejście do dodawania detektora do każdej klasy. Zamiast tego możemy utworzyć pozycję nasłuchiwania i klas w pliku XML.

Krok 1: Utworzenie klasy Listener w Javie, implementacja ITestListener i przesłanianie jej metod podobnych do wspomnianych powyżej.

Klasa: TestListener.java

Kod:

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

Krok 2: Następnie musimy utworzyć normalny program Java do logowania w aplikacji posiadającej wszystkie metody @test i nie trzeba używać adnotacji @Listeners.

Klasa: Testing.java

Kod:

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

Krok 3: Teraz możemy dodać wpis detektora i klasy do pliku XML, taki jak ten podany poniżej:

Kod:







Wynik:

Wniosek

Powyżej opisu programów nasłuchujących wyraźnie podano podstawowe informacje o programach nasłuchujących oraz sposób ich implementacji w programie Java w celu dostosowania dzienników i raportów. Przed użyciem dowolnego nasłuchiwania wymagane jest jasne zrozumienie wszystkich nasłuchiwaczy i konkretnych scenariuszy, w których należy ich używać wraz z zastępowanymi przez nie metodami.

Polecane artykuły

To jest przewodnik dla słuchaczy w TestNG. Tutaj omawiamy metody nasłuchiwania w TestNG i dwa sposoby tworzenia nasłuchiwaczy w TestNG. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej-

  1. Zainstaluj TestNG
  2. Wydarzenia AngularJS
  3. Co to jest XPath?
  4. Ramy testowe dla Java
  5. Adnotacje Java
  6. Przesłanianie w Javie