W tym samouczku omówimy wyczerpujące zestawy Krytyczne pytania i odpowiedzi na rozmowę kwalifikacyjną TestNg i dystrybuowane w zależności od poziomu trudności, gdzie możesz lepiej szybko wyposażyć się w TestNg
Te zestawy pytań do rozmowy kwalifikacyjnej Testng są dystrybuowane w następujących modułach lub zestawach:
Pytania do wywiadu TestNg - Advance
- Jak wykluczyć grupę z cyklu wykonywania testów?
- Hjak osiągnąć implementację itestlistenera TestNG?
- Jak zaimplementować testng iAnnotationtransformer?
- Jak zaimplementować testng iinvokedmethodlistener?
- Jak wdrożyć dostawców danych w TestNG
- Jeśli nie ustawimy priorytetu metody testowej, w jakiej kolejności testy są wykonywane w TestNG
- Jakie są typy raportów generowanych domyślnie w TestNG?
- Wspomnij o różnicy między zestawem testów TestNG a testem TestNG?
- Jaki jest pożytek z atrybutu threadPoolSize z adnotacją @Test
- Co robią atrybuty alwaysRun?
- Jacy różni słuchacze są dostępni?
- Jaka jest domyślna wartość priorytetu TestNG?
- Jak ponownie uruchomić testy TestNg zakończone niepowodzeniem przy użyciu mechanizmu automatycznego ponawiania?
- Jak równolegle uruchamiać skrypty testowe?
- Jak zintegrować TestNg z GRADLE Build Tool?
- Jak uruchomić odbiornik Testng Default z Gradle, aby wygenerować raport przy użyciu biblioteki TestNg
- Jak uruchomić plik Testng Runner xml za pomocą wiersza poleceń?
- Jak zintegrować TestNg XML z Maven?
- Jak określić parametr TestNg Test przy użyciu TestNg i Maven?
Pytania do rozmowy kwalifikacyjnej TestNg - Pośredni
- Co oznacza invocationCount w TestNG?
- Kim są słuchacze w TestNG?
- Czy wspomnieć o różnicach między adnotacjami @Factory i @Dataprovider w TestNg?
- Jak używać TestNG Reporter Class do generowania dziennika?
- Jak zrobić obsługę wyjątków w TestNG?
- Jak osiągnąć iniekcję zależności za pomocą TestNg XML?
- Jakie są różne podejścia do asercji w TestNG?
- Wymień niektóre z często używanych twierdzeń w TestNG
- Co rozumiesz przez potwierdzenia w TestNG?
- Różnica między Hard Assert i Soft Assert w TestNg
- Jak pisać asercje miękkie w TestNg
- Jak używać wyrażeń regularnych w grupach TestNG?
Pytania do rozmowy kwalifikacyjnej TestNg - podstawowe
- Co to jest TestNG?
- Jakie są zalety TestNg?
- Jak wyzwolić i wykonać skrypt testowy TestNg?
- Podać adnotacje Testng, które są dostępne?
- Wspomnieć o sekwencji wykonywania adnotacji TestNg?
- Jak wyłączyć wykonywanie testów dla skryptu testowego?
- Jak możesz określić słuchaczy w TestNG xml?
- Co to jest test limitu czasu w TestNg?
- Jak osiągnąć test oczekiwanego wyjątku z TestNG?
- Jaka jest różnica między adnotacją @BeforeTest a # @ BeforeMethod?
- Jakie są zalety korzystania z pliku testng.xml?
- Ile typów zależności można osiągnąć za pomocą TestNG?
Pytania i odpowiedzi do wywiadu testowego || Zestaw 1
Jak wykluczyć grupę z cyklu wykonywania testów?
Możesz użyć znacznika wykluczenia, aby wykluczyć grupę przypadków testowych z wykonywania w poniższy sposób w pliku Testng xml
Jakie są typy raportów generowanych domyślnie w TestNG?
TestNG generuje 4 rodzaje raportów po wykonaniu, które są:
- Raport HTML TestNG
- Raport TestNG dostępny e-mailem
- XML raportu TestNG
- Raport XML TestNg nie powiódł się
Wspomnij o różnicy między zestawem testów TestNG a testem TestNG?
Zestaw testów TestNG to zbiór klas testowych i metod testowych, które można uruchamiać jednocześnie lub równolegle z pliku XML TestNG.
Z drugiej strony metoda testowa TestNG to pojedynczy plik przypadku testowego lub metoda testowa.
Jaki jest pożytek z atrybutu threadPoolSize z adnotacją @Test
Za pomocą atrybutu threadPoolSize możemy zdefiniować pulę wątków o określonym rozmiarze przez numer metody testowej, która ma być wykonana przez wiele dostępnych wątków.
Atrybut jest ignorowany, jeśli nie wspomniano o invocationCount.
@Test(ThreadPoolSize = 3)
publiczna nieważność testCaseOne(){
System.out.println("testCaseOne w toku");
}
W powyższej metodzie testowej testCaseOne zostanie wywołany z trzech różnych wątków.
Co robią atrybuty alwaysRun?
Ten atrybut adnotacji AlwaysRun jest używany za każdym razem, gdy chcesz wykonać metodę testową niezależnie od zależnych parametrów, od których zależy metoda testowa, ale kończy się to niepowodzeniem. Jeśli ustawisz wartość true, musisz ustawić atrybut na true.
Jacy różni słuchacze są dostępni?
- Odbiornik ITtestów
- IReporter
- ISuiteListener
- IAdnotacja Transformator
- IAdnotacja Transformator2
- I do gotowania
- IInvokedMethodListener
- ImethodInterceptor
Jaka jest domyślna wartość priorytetu TestNG?
Priorytet TestNG ma domyślną wartość zero.
Jak ponownie uruchomić testy TestNg zakończone niepowodzeniem przy użyciu mechanizmu automatycznego ponawiania?
TestNg udostępnia jeden interfejs o nazwie as Analizator ponownych prób listener, do którego możesz zaimplementować interfejs, automatycznie uruchom ponownie skrypty zakończone niepowodzeniem testu, wymieniając klasę w pliku testNg.XML, oto poniższy kod do implementacji tego samego:
W powyższym obszarze możesz skonfigurować liczbę ponownych prób, maksymalne zliczenia, a także możesz wspomnieć, w których wyjątkach chcesz ponownie uruchomić skrypty testowe.
public class Retry implementuje IRetryAnalyzer { int retryCounter = 0; // Maksymalna liczba nieudanych wykonań int autoRetryLimit = 2; @Override public boolean retry(ITestResult iTestResult) { if (retryCounter < autoRetryLimit) { retryCounter++; zwróć prawdę; } zwróć fałsz; } }
Podejście drugie: jak ponownie uruchomić testy TestNg zakończone niepowodzeniem przy użyciu mechanizmu automatycznego ponawiania
W poniższym podejściu możesz zbudować 2 klasy, tj. Jedną jest Ponów zajęcia gdzie można zachować logikę kontrolowania liczby iteracji w przypadku niepowodzeń testów, które zaimplementują interfejs Testng Analizator ponownych prób.
Inną klasą jest w zasadzie implementacja innego odbiornika interfejsu IAnnotationTransformer i zaimplementowanie metody przekształcać który wewnętrznie współdziała z poprzednią klasą (tj Ponów zajęcia)
public class Retry implementuje IRetryAnalyzer { int retryCounter = 0; // Maksymalna liczba nieudanych wykonań int autoRetryLimit = 2; @Override public boolean retry(ITestResult iTestResult) { if (retryCounter < autoRetryLimit) { retryCounter++; zwróć prawdę; } zwróć fałsz; } }
i na koniec dodaj CognitiveRetry w detektorze pliku testng.xml.
<listeners>
<listener class-name= "com.lambdageeks.cognitiveRetryUtils.CognitiveRetry"/>
</listeners>
Jak osiągnąć implementację itestlistenera TestNG?
ITestListener to interfejs w TestNg, który ma wiele metod (nie zaimplementowanych, ponieważ jest to interfejs), które mogą być implementowane przez klasę. Każda metoda reprezentuje określone funkcje lub scenariusze, dlatego w zależności od potrzeb możesz wdrożyć te metody.
Dla przykładu w przypadku niepowodzenia testu to metoda, którą możesz zaimplementować, w której chcesz wykonać dowolne operacje, podczas gdy jakakolwiek metoda testowa nie powiedzie się, powiedzmy, że chcesz przechwycić zrzut ekranu w przypadku awarii dowolnej metody testowej, więc możesz napisać metodę takecreenshot wewnątrz w przypadku niepowodzenia testu , a ponieważ ITestListener jest interfejsem, testNg będzie nadal nasłuchiwał zdarzeń (niepowodzenia testów) i za każdym razem, gdy wystąpią niepowodzenia testu, zrzut ekranu zostanie przechwycony.
Oto implementacja przechwytywania zrzutu ekranu za każdym razem, gdy testowy skrypt napotka awarię:
import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; importuj org.openqa.selenium.WebDriver; import or.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; importuj plik java.io.; importuj wyjątek java.io.IO; importuj java.util.logging.Logger; klasa publiczna CustomListerners implementuje ITestListener { Sterownik WebDriver=null; String filePath = "D:\\\\LambdaGeeks\\\\SCREENSHOTS"; @Nadpisanie public void onTestFailure (wynik ITestResult) { String testMethodName=String.valueOf(result.getName()).trim(); ITestContext testContext = wynik.getTestContext(); Sterownik WebDriver = (WebDriver)testContext.getAttribute("sterownik"); przechwyćTheScreenShot(nazwa metody testowej, sterownik); } public void przechwytywanieTheScreenShot(String nazwa metody, sterownik WebDriver) { Plik scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); /* Każdy zrzut ekranu zostanie zapisany wraz z nazwą testu, aby zapewnić lepszą korelację */ próbować { FileUtils.copyFile(scrFile, nowy plik(filePath+nazwametody+.jpg")); } catch (IOException e) { e.printStackTrace(); } } public void onFinish (kontekst ITestContext) {} public void onTestStart(wynik ITestResult) { } public void onTestSuccess(wynik ITestResult) { } public void onTestSkipped (wynik ITestResult) { } public void onTestFailedButWithinSuccessPercentage(wynik ITestResult) { } public void onStart (kontekst ITestContext) { } }
Musisz także dodać tę klasę do tagu listenera w pliku testng.xml, tak jak zrobiliśmy to w poprzednim pytaniu.
Jak zaimplementować testng iAnnotationtransformer?
TestNg udostępnia interfejs o nazwie IAnnotationTransformer, który udostępnia metodę o nazwie „transform”, którą można zaimplementować i która byłaby wyzwalana w czasie wykonywania przez TestNG. Ta implementacja służy do modyfikowania zachowania adnotacji testowej klasy testowej i metod testowych
W poniższym segmencie zobaczylibyśmy, jak możemy to zrobić
public class TestClassAnnotations { @Test(alwaysRun = true,dependsOnMethods = "testMethodB") public void testMethodA() { System.out.println("--- Dostosowywanie zachowania środowiska wykonawczego za pomocą ITestAnnotation ---"); } @Test public void testMethodB() { System.out.println("--- Drugi testMethods ---"); Potwierdź.niepowodzenie(); } }
Domyślnie, jeśli uruchomimy powyższy kod, zostanie wykonana tylko jedna metoda, która jest testMethodA, a inna metoda testMethodB zakończy się niepowodzeniem, ponieważ celowo zawodzimy, używając metody Assert.fail ().
Ale jeśli zmienimy Alwaysrun = prawda adnotacja na false przy użyciu IAdnotacja Transformator wtedy ta metoda nie zostanie wykonana, poniżej znajduje się fragment kodu dotyczący sposobu implementacji IAdnotacja Transformator i użyj go w testing.xml, aby zmienić zachowanie adnotacji TestNG
Implementacja CustomAnnotationTransformers idzie tutaj:
public class CustomAnnotationTransformers implementuje IAnnotationTransformer { public boolean isTestRunning(ITestAnnotation iTestAnnotation) { if (iTestAnnotation.getAlwaysRun()) { return true; } zwróć fałsz; } public void transform(ITestAnnotation adnotations, Class testClasses, Constructor testConstructors, Method testMethods) { if (isTestRunning(adnotations)) { annotations.setEnabled(false); } } }
Oto odbiornik, który musimy dodać w pliku testing.xml
<listeners>
<listener class-name= "com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>
Jak zaimplementować testng iinvokedmethodlistener?
Jeśli chcesz zaimplementować funkcję, w której pewna metoda zostanie wykonana przed i po każdej metodzie testowej TestNg, ta funkcja może zostać zaimplementowana przez testng IInvokedMethodListener słuchacz.
Oto fragment kodu do implementacji funkcji:
pakiet com.lambdageeks; importuj org.testng.IInvokedMethod; importuj org.testng.IInvokedMethodListener; importuj org.testng.ITestResult; public class CustomAnnotationTransformers implementuje IInvokedMethodListener { public void beforeInvocation(IInvokedMethod method, ITestResult testResult) { System.out.println(" ::: zanim metoda z IInvokedMethodListener zostanie wyzwolona dla metody testowej o nazwie: " + method.getTestMethodName().getMethod ) + " ::: "); } public void afterInvocation(IInvokedMethod method, ITestResult testResult) { System.out.println(" :::: Po wyzwoleniu metody z IInvokedMethodListener dla metody testowej o nazwie : " + method.getTestMethod().getMethodName() + " : :: "); } }
Oto klasa testowa do testowania funkcji:
public class TestClassAnnotations { @Test(alwaysRun = true) public void testMethoddummy() { System.out.println("--- To jest metoda testowa , testująca funkcję IInvokedMethodListener Testng Listener ---"); } }
Musisz jak zawsze wspomnieć o TestNG iinvokedmethodlistener w tagu listener w pliku testng.xml
<listeners>
<listener class-name="com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>
Wynik wykonania powinien wyglądać następująco:
::: Przed metodą z IInvokedMethodListener wyzwalana jest metoda testowa o nazwie: testMethoddummy :::
- To jest metoda testowa, testująca funkcję Listenera IInvokedMethodListener Testng -
:::: After Method z IInvokedMethodListener jest wyzwalane dla metody testowej o nazwie: testMethoddummy :::
Jak wdrożyć dostawców danych w TestNG?
Możemy zaimplementować DataProvider używając TestNg w poniższym podejściu:
public class DataProviderDemo { @DataProvider(name = "dpName") public Object[][] dataProvidersMethodName() { return new Object[][]{{"Lambda"}, {"Geeks"}}; } @Test(dataProvider = "dpName") public void dataproviderDummyTestMethod(String dataValues) { System.out.println("Parametry danych z przykładami dostawcy danych : : " + dataValues); } }
Jeśli nie ustawimy priorytetu metody testowej, w jakiej kolejności testy są wykonywane w TestNG?
Testy są wykonywane w kolejności alfabetycznej według TestmethodName.
Na przykład w poniższym fragmencie kodu:
public class SequenceTest { @Test() public void geeks() { System.out.println("Test sekwencji, metoda uruchomiona: geeks"); } @Test() public void lambda() { System.out.println("Test sekwencji , Metoda uruchomiona : lambda "); } @Test() public void abc() { System.out.println("Test sekwencji, metoda uruchomiona :abc"); } }
Wynik będzie wyglądał następująco:
Test sekwencji, metoda uruchomiona: abc
Test sekwencji, metoda uruchomiona: maniacy
Test sekwencji, metoda uruchomiona: lambda
Jak równolegle uruchamiać skrypty testowe?
Możesz uruchomić skrypty testowe przy użyciu pliku XML TestNg, wspominając o rozszerzeniu równolegle = „metody” liczba wątków = „2 ″, tutaj zostaną wykonane 2 równoległe przypadki, jeśli chcesz wykonać więcej wątków równolegle.
<suite name="DummyTest" parallel="methods" thread-count="2" >
<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
</suite>
Jak zintegrować TestNg z GRADLE Build Tool?
Możesz uruchomić Testng Suite w gradle na różne sposoby:
Jak uruchomić grupy TestNg przy użyciu Gradle: Możesz utworzyć zadanie w pliku build.gradle, w którym można wymienić rozszerzenie useTestNG () i wspomnij o poniższych szczegółach podczas uruchamiania grup testowych.
Jak uruchomić odbiornik Testng Default z Gradle, aby wygenerować raport przy użyciu biblioteki TestNg
Jeśli chcesz użyć odbiornika niestandardowego, możesz wspomnieć o tym w następującym podejściu:
Jak uruchomić plik Testng Runner xml za pomocą wiersza poleceń?
Możesz użyć lokalizacji TestNg Downloaded i wspomnieć org.testng.TestNg.testNgRunner.xml, aby uruchomić plik runner xml z wiersza polecenia.
java -cp "/opt/testng-7.1.jar:bin" org.testng.TestNG testngRunner.xml
Jak zintegrować TestNg XML z Maven?
Możesz zintegrować TestNg z Maven za pomocą wtyczki o nazwie wtyczka maven-surefire gdzie można skonfigurować uruchamianie pliku testNgrunner.xml przy użyciu konfiguracji:
Jak określić parametr TestNg Test przy użyciu TestNg i Maven?
Możesz określić parametr Test za pomocą wtyczki Maven SureFire z plikiem TestNg.XML w następujący sposób
Pytania i odpowiedzi do wywiadu testowego || Zestaw 2
Co oznacza invocationCount w TestNG?
invocationCount to atrybut adnotacji testowej, za pomocą którego można zdefiniować liczbę iteracji, przez którą metoda testowa zostanie wykonana w jednym wykonaniu.
Powyższy test zostanie wykonany dwa razy, ponieważ invocationCount jest wymienione jako 2.
@Test(invocationCount = 2) public void testOfInvCount() { System.out.println("Test licznika wywołań w toku"); }
Kim są słuchacze w TestNG?
w TestNg słuchacze są w zasadzie interfejsem w Javie, który musisz zaimplementować w swojej klasie. Zaimplementowana klasa będzie nadal nasłuchiwała określonych zdarzeń i wykonywała określony blok kodu powiązany z tym zdarzeniem. Tutaj podczas implementacji interfejsu ostatecznie zaimplementujesz niezaimplementowane metody, a ten blok kodu lub metody zostaną wykonane jako i kiedy określone zdarzenie zostaje wyzwolony.
Za pomocą detektorów TestNG możemy wykonać wiele działań w czasie wykonywania, nasłuchując różnych zdarzeń wyzwalanych przez wykonanie skryptu testowego i ich status, lub możemy wykonać raportowanie. Możemy również zmienić implementację adnotacji TestNg.
Czy wspomnieć o różnicach między adnotacjami @Factory i @Dataprovider w TestNg?
@Dataprovider: Jeśli chcesz wykonać ten sam test, ale z różnymi różnorodnymi zestawami danych w każdym przebiegu, możesz użyć adnotacji dostawcy danych, co pozwala osiągnąć podejście do testowania opartego na danych. W tym przypadku wykonanie metody testowej odbywa się przy użyciu tej samej instancji klasy, do której należy metoda testowa.
@Factory: Zostaną wykonane wszystkie metody testowe obecne w klasie testowej przy użyciu oddzielnych i wielu wystąpień klasy.
Jak używać TestNG Reporter Class do generowania dziennika?
Możesz rejestrować szczegóły i dane za pomocą klasy Reporter, a te dzienniki zostaną przechwycone przez raport wygenerowany przez TestNG
Reporter.log („Komunikat logowania”);
Jak zrobić obsługę wyjątków w TestNG?
Możesz wspomnieć o rodzaju oczekiwanego wyjątku w atrybucie o nazwie spodziewane Wyjątki z adnotacją @test; w takim przypadku TestNg oznaczy test jako zaliczony.
@Test (spodziewaneExceptions = numberFormatException.class)
Jak osiągnąć iniekcję zależności za pomocą TestNg XML?
TestNG pozwala nam wstrzykiwać zależności między różnymi grupami testów za pośrednictwem pliku TestNG XML. Dzięki któremu możemy mieć zależność jednej grupy od drugiej.
Jakie są różne podejścia do asercji w TestNG?
W TestNg możemy używać dwóch typów asercji.
Miękkie aserty
Twarde asert
Wymień niektóre z często używanych twierdzeń w TestNG
Niektóre z szeroko stosowanych metod asercji w TestNG:
- assertEquals (wartość logiczna rzeczywista, oczekiwana wartość logiczna)
- assertEqual (ciąg rzeczywisty, oczekiwano ciągu znaków)
- assertEqual (ciąg rzeczywisty wynik, oczekiwany wynik w postaci ciągu, komunikat w postaci ciągu)
- assertTrue (warunek)
- assertFalse (warunek)
- assertFalse (warunek, wiadomość)
- assertTrue (warunek, wiadomość)
Co rozumiesz przez potwierdzenia w TestNG?
Wykonywane jest stwierdzenie, aby zweryfikować rzeczywiste wyniki testu w odniesieniu do oczekiwanych wyników testu. W TestNg możemy użyć hard assert lub soft assert.
Różnica między Hard Assert i Soft Assert w TestNg
Podczas pracy z asertem twardym, jeśli w przypadku wystąpienia błędu w warunku asercji kolejne kroki testowe nie zostaną wykonane i zostaną przerwane, a ostatecznie test zostanie oznaczony jako przypadek testowy zakończony niepowodzeniem.
Z drugiej strony, Soft Assert bierze pod uwagę walidację wszystkich punktów asercji, nawet jeśli są jakiekolwiek błędy w którymkolwiek z twierdzeń. Oznacza to, że wykonanie testu nie zostaje przerwane, nawet jeśli jedno twierdzenie nie powiedzie się.
Jak pisać asercje miękkie w TestNg
Poniższy fragment kodu przedstawia podejście do pisania asercji miękkiej w TestNG
@Testuj publiczne potwierdzenie unieważnienia() { SoftAssert softAssertion = new SoftAssert(); //Potwierdzenie 1 softAssertion.assertEquals("exp", "act"); //Potwierdzenie 2 softAssertion.assertEquals(123, 123); //Potwierdzenie 3 softAssertion.assertEquals("wartość rzeczywista", "wartość oczekiwana"); // Na koniec rozważenie wszystkich wartości asercji softAssertion.assertAll(); }
Jak używać wyrażeń regularnych w grupach TestNG?
W TestNG można użyć wyrażenia regularnego, aby wykonać grupy, które mają podobny wzorzec w nazewnictwie.
Na przykład, jeśli chcesz uruchomić wszystkie grupy zaczynające się od „testX” zgodnie z nazwą, możesz użyć wyrażenia regularnego jako testX. * W pliku XML TestNG.
Pytania i odpowiedzi do wywiadu testowego || Zestaw 3
Co to jest TestNG?
TestNg zasadniczo reprezentuje „Testowanie nowej generacji”To platforma do testów jednostkowych, która kontroluje przepływ i kolejność automatyzacji testów i skryptów automatyzacji, dostarczając różne adnotacje z ich funkcjonalnościami.
Jakie są zalety TestNg?
- Dzięki różnym adnotacjom Testng możesz lepiej kontrolować przepływ i kolejność automatyzacji i wykonywania testów.
- Testowanie klas lub Testowanie metod skryptów Równoległe wykonywanie metod można osiągnąć za pomocą TestNg.
- TestNg można łatwo zintegrować z różnymi narzędziami do budowania, takimi jak Maven, Gradle. Można go również zintegrować z narzędziami CICD, takimi jak Jenkins.
- TestNG zapewnia szczegółową funkcję raportowania HTML i jest łatwo zintegrowany z inną platformą raportowania testów, taką jak Allure, raport zasięgu z funkcjami słuchaczy TestNG.
- Wszystkie testy można wyzwolić za pomocą pliku testng.xml, w którym można podać nazwę klasy testowej/testu/pakietu testowego do uruchomienia.
- Testowanie sterowane danymi można przeprowadzić za pomocą adnotacji TestNg DataProvider. Ponadto testy parametryzacji można również przeprowadzić za pomocą pliku Testng.xml, na przykład podczas testowania w wielu przeglądarkach można sparametryzować różne przeglądarki dla różnych testów. Ta funkcja pomaga w tworzeniu platformy opartej na danych za pomocą TestNG.
- TestNg Umożliwia dołączenie/wykluczenie zestawu testów z pliku tesngNg.xml z atrybutem włącz i wyklucz.
- Dzięki TestNg możesz grupować swoje testy i wstrzykiwanie zależności pomiędzy testy.
- TestNg zapewnia wielu słuchaczom te, dzięki którym można osiągnąć wiele rzeczy, takich jak niestandardowe raportowanie (IReporter), integracja z różnymi narzędziami (ITestListener), zmiana zachowania adnotacji TestNG Test w czasie wykonywania za pomocą IAnnotationTransformer i wiele innych.
- Możesz pominąć konkretny test, nadać priorytet kolejności testowej, utworzyć test ograniczony czasowo z adnotacjami TestNg Test.
- Możesz użyć Hard Assertion oraz Soft Assertion z TestNg do pisania instrukcji Assert.
- TestNg generuje TestNG-failed.xml po każdym wykonaniu testu, więc możesz ten sam wygenerowany TestNG-failed.xml, aby ponownie uruchomić nieudane skrypty testowe.
- TestNg zapewnia różne adnotacje testowe, takie jak @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.@PrzedApartamentem,@After Suite.
- Możesz uruchomić oczekiwany Test wyjątków za pomocą TestNg.
- Możesz ponownie uruchomić nieudany test za pomocą IretryAnalyzer firmy Testng
Jak ci wyzwolić i wykonać skrypt testowy TestNg?
Skrypt TestNg Test można uruchomić na kilka sposobów:
- Kliknij prawym przyciskiem myszy Test Class i „uruchom jako” i wybierz opcję „TestNg Test”.
- Utwórz testng.xml i bezpośrednio na pliku, a następnie uruchom plik xml.
- Jeśli zintegrujesz testNg.xml z narzędziem do budowania, takim jak Maven/Gradle, możesz również uruchomić z maven lub Gradle.
- Jeśli narzędzie do budowania, takie jak Maven/Gradle, jest zintegrowane z CICD, możesz uruchomić z CICD, tj. z Jenkinsa.
Podać adnotacje Testng, które są dostępne?
Najczęściej używane adnotacje testowe to:
- @Bezpieczeństwo
- @AfterSuite
- @Przed testem
- @PoTest
- @Przed zajęciami
- @Po zajęciach
- @Bez tytułu
- @Poradnik
- @PrzedGrupami
- @PoGrupy
- @Test
Wspomnieć o sekwencji wykonywania adnotacji TestNg?
Z punktu widzenia wykonywania testów poniżej przedstawiono kolejność wszystkich dostępnych adnotacji TestNg:
Adnotacje dotyczące warunków wstępnych:
- @Bezpieczeństwo
- @Przed testem
- @Przed zajęciami
- @Bez tytułu
- Testuj adnotacje:
- @Test
- Adnotacje PostCondition:
- @AfterSuite
- @PoTest
- @Po zajęciach
- @Poradnik
Jak wyłączyć wykonywanie testów dla skryptu testowego?
Możesz użyć atrybutu enabled jest równy false w atrybucie adnotacji @Test, jak wspomniano poniżej:
@Test(enabled = false) public void logout(){ System.out.println("Przykładowy test"); }
Jak możesz określić słuchaczy w TestNG xml?
Możesz użyć pliku Tesng xml, aby wspomnieć o odbiornikach, które mają być używane jako część wykonywania skryptów testowych, w poniższym podejściu:
...
Co to jest test limitu czasu w TestNg?
W tym przypadku „test przekroczenia limitu czasu” oznacza, że w przypadku, gdy wykonanie skryptu testowego trwa dłużej niż określony czas, testng przerwie test i oznaczy test jako zakończony niepowodzeniem.
@Test(timeOut = 6000) // tym razem w mullisekundach public void testShouldPass() throws InterruptedException { Thread.sleep(2000); }
Jak osiągnąć test oczekiwanego wyjątku z TestNG?
Jeśli metoda Test zgłosi wyjątek, który jest taki sam, jak określony jako część atrybutu adnotacji testu spodziewane wyjątki, wówczas TestNg oznaczy test jako zaliczony.
@Test(expectedExceptions = ArithmeticException.class) public void TestDivision() { int i = 1 / 0; }
Powyższa metoda Test zostanie przekazana, ponieważ zgłosi wyjątek oczekiwany przez TestNG.
Jaka jest różnica między adnotacją @BeforeTest a @BeforeMethod?
@BeforeTest jest wykonywany raz przed każdym testngiem etykietka wspomniany w pliku testng.xml
@BeforeMethod jest wykonywana przed każdą metodą skryptu testowego.
Jakie są zalety korzystania z pliku testng.xml?
Za pomocą pliku testng.xml można sterować przebiegiem wykonywania za pomocą jednego zestawu testów lub wielu zestawów testów w jednym pliku testng xml. Niektóre z ważnych funkcji to:
- Plik testng.xml pozwala nam wykluczyć i uwzględnić metody testowe oraz wykonanie grupy testowej.
- Możesz przekazać dane/parametry testowe przez testng.xml.
- Możesz dodać zależność między metodami testowymi, a także grupę metod testowych
- Możesz ustalić priorytety przypadków testowych.
- Uzyskuje się równoległe wykonanie testów przypadków testowych.
- Możesz zaimplementować różne odbiorniki testng i używać ich, wymieniając je w testng.xml.
- Jeśli uruchomisz swój pakiet z testng.xml, test nie powiedzie się tylko dla następnej iteracji przy użyciu TestNG-failed.xml jest generowany po każdym wykonaniu.
- Możesz uruchomić określone grupy testów za pomocą tag TestNG xml.
Ile typów zależności można osiągnąć za pomocą TestNG?
Istnieją dwa rodzaje zależności, które możemy osiągnąć za pomocą TestNG:
A. DependsOnMethods:
Używając tego atrybutu dependOnMethods, definiujesz, która metoda testowa będzie zależna od innych metod testowych, więc jeśli zależna metoda nie powiedzie się lub nie zostanie uruchomiona, zależna metoda również nie zostanie uruchomiona.
@Test public void loginUserProfile() { System.out.println("Zaloguj użytkownika"); } @Test(dependsOnMethods = "loginUserProfile") public void logOutPage_user() { System.out.println("Strona wylogowania dla użytkownika"); }
Oto metoda testowa logOutPage_user, która zostanie uruchomiona po pomyślnym wykonaniu testu loginUserProfile.
B. dependOnGroups:
W tego typu zależności testowej pozwala nam umieścić iniekcję zależności dla metod testowych z grupą metod testowych.
Przebieg wykonywania odbywa się w taki sposób, że najpierw zostaje wyzwolona i wykonana testGroup, a następnie zostaje uruchomiona zależna metoda testowa, a po pomyślnym zakończeniu testu grupowego zostaje wykonana zależna metoda testowa.
@Test(groups="AtestGroupName") public void testcaseOne() { System.out.println("testcaseOne w trakcie"); } @Test(groups="AtestGroupName") public void testcaseTwo() { System.out.println("testcaseTwo w trakcie"); } @Test(dependsOnGroups="AtestGroupName") public void testcaseThree() { System.out.println("testcaseThree w trakcie"); }
Wnioski: Na tym kończymy listę wszystkich krytycznych i ważnych Pytania i odpowiedzi na rozmowę kwalifikacyjną TestNg , aby uzyskać lepszą przyczepność na TestNg, możesz przejść przez wyczerpująca dokumentacja dotycząca TestNg.
Aby dowiedzieć się więcej na temat wyczerpujący samouczek dotyczący selenu, który możesz odwiedzić tutaj.