TestNG-Bemerkungen

TestNG-Bemerkungen
MIN
16 März 2024

In diesem Tutorial werden wir alle TestNG-Annotationen zusammen mit den verschiedenen unterstützten Attributen untersuchen. Eine Anmerkung ist ein Tag oder ein Metadatum, das zusätzliche Informationen über eine Klasse, Schnittstelle oder Methode liefert. TestNG verwendet diese Annotationen, um verschiedene Funktionen bereitzustellen, die beim Aufbau eines robusten Test-Frameworks helfen. An dieser Stelle werden wir einen detaillierten Blick auf jede der TestNG-Annotationen werfen und ihre Syntax und Verwendung untersuchen.

Inhaltsübersicht

@Test

@Test ist die wichtigste und am häufigsten verwendete Annotation von TestNG. Es wird verwendet, um eine Methode als „Test“ zu bezeichnen. Jede Methode, über der die @Test-Annotation zu sehen ist, wird also als TestNG-Test betrachtet.

@Test

public void sampleTest() {

//Beliebige Testlogik

System.out.println(„Hallo! ITtester.sk hier!“);

}

Schauen wir uns nun einige wichtige Attribute der @Test-Anmerkungen an:

1. Beschreibung – Das Attribut „Beschreibung“ dient der Beschreibung der Prüfmethode. Sie enthält in der Regel eine einzeilige Zusammenfassung des Tests.

@Test(description = „Testzusammenfassung“)

2. dataProvider – Dieses Attribut hilft bei der Erstellung datengesteuerter Tests. Dient zur Angabe des Namens des Datenanbieters für den Test.

@Test(dataProvider = „Name des Datenanbieters“)

3. Priorität – Dieses Attribut hilft bei der Priorisierung von Testmethoden. Die Standardpriorität beginnt bei 0 und die Tests werden in aufsteigender Reihenfolge ausgeführt.

@Test(Priorität = 2)

4. enabled-Dieses Attribut wird verwendet, um zu bestimmen, ob die Testmethode mit dem Set oder der Klasse ausgeführt wird oder nicht.

@Test(aktiviert = false)

5. Gruppen – dient zur Bestimmung der Gruppen, zu denen die Prüfmethode gehört.

@Test(groups = { „sanity“, „regression“ })

7. dependsOnMethods – Dient zur Angabe der Methoden, von denen die Prüfmethode abhängt. Die Testmethode wird erst dann ausgeführt, wenn die abhängigen Tests erfolgreich durchgeführt worden sind.

@Test(dependsOnMethods = { „dependentTestMethodName“ })

8. dependsOnGroups – Dient zur Angabe der Gruppen, von denen die Prüfmethode abhängt.

@Test(dependsOnGroups = { „dependentGroup“ })

9. alwaysRun – Wenn auf True gesetzt, wird die Testmethode auch dann ausgeführt, wenn die abhängigen Methoden fehlschlagen.

@Test(alwaysRun=True)

10. timeOut – dient zur Eingabe des Timeout-Wertes für den Test (in Millisekunden). Dauert der Test länger als der angegebene Timeout-Wert, wird der Test abgebrochen und als fehlgeschlagen markiert.

@Test (timeOut = 500)

@BeforeSuite

Die kommentierte Methode wird nur einmal ausgeführt, bevor alle Tests in dieser Suite durchgeführt werden.

@AfterSuite

Die kommentierte Methode wird nur einmal ausgeführt, nachdem alle Tests in dieser Suite durchgeführt wurden.

@BeforeClass

Die kommentierte Methode wird nur einmal ausgeführt, bevor die erste Testmethode in der aktuellen Klasse aufgerufen wird.

@AfterClass

Die kommentierte Methode wird nur einmal ausgeführt, nachdem alle Testmethoden in der aktuellen Klasse ausgeführt worden sind.

@BeforeTest

Die kommentierte Methode wird ausgeführt, bevor eine Testmethode, die zu Klassen innerhalb des Tags gehört, ausgeführt wird.

@AfterTest

Die kommentierte Methode wird ausgeführt, nachdem alle Testmethoden, die zu Klassen innerhalb des Tags gehören, ausgeführt wurden.

@Datenprovider

Mit @DataProvider können wir ein datengesteuertes Framework erstellen, in dem Daten an die entsprechende Testmethode übergeben werden und mehrere Iterationen des Tests für verschiedene Werte der von der @DataProvider-Methode übergebenen Testdaten ausgeführt werden. Die mit der @DataProvider-Anmerkung versehene Methode gibt ein 2D-Array oder -Objekt zurück.

//Datenanbieter, der ein 2D-Array einer 3*2-Matrix zurückgibt

@DataProvider(name = „dataProvider1“)

public Object[][] dataProviderMethod1() {

return new Object[][] {{„it“, „tester“},{„k1“, „r1“},{„k2“, „r2“}};

}

//Diese Methode ist an den obigen Datenanbieter gebunden

//Der Testfall wird 3 Mal mit verschiedenen Werten ausgeführt

@Test(dataProvider = „dataProvider1“)

public void sampleTest(String str1, String str2) {

System.out.println(str1 + “ “ + str2);

}

@Parameter

Der @Parameter-Tag wird verwendet, um Parameter an Testskripte zu übergeben. Der Wert des @Parameter-Tags kann über die Datei testng.xml übergeben werden.

Beispiel für die Datei testng.xml mit dem Parameter-Tag:

@Test (timeOut = 500)<suite name=“sampleTestSuite“>

<test name=“sampleTest“>

<parameter name=“sampleParamName“ value=“sampleParamValue“/>

<Klassen>

<class name=“TestFile“ />

</classes>

</test>

</suite>

Beispiel für ein Testskript mit @Parameter-Anmerkung:

public class TestFile {

@Test

@Parameter(„sampleParamName“)

public void parameterTest(String paramValue) {

System.out.println(„sampleParamName = “ + sampleParamName);

}

@Listener

TestNG bietet uns verschiedene Arten von Listenern, mit denen wir eine Aktion ausführen können, wenn ein Ereignis ausgelöst wird. Typischerweise werden testNG-Listener verwendet, um Berichte und Protokollierung zu konfigurieren.

@Listeners(Paketname.CustomizedListenerClassName.class)

public class TestClass {

WebDriver driver= new FirefoxDriver();@Test

public void testMethod(){

//Logik testen

}

}

@Fabrik

Die Annotation @Factory hilft bei der dynamischen Ausführung von Testfällen. Mit der @Factory-Annotation können wir Parameter an die gesamte Testklasse übergeben, während der Test läuft. Die übergebenen Parameter können von einer oder mehreren Testmethoden dieser Klasse verwendet werden.

Im folgenden Beispiel führt die Klasse TestFactory eine Testmethode in der Klasse TestClass mit verschiedenen Parametersätzen aus – „k1“ und „k2“.

public class TestClass{

private String str;

//Konstrukteur

public TestClass(String str) {

this.str = str;

}

@Test

public void TestMethod() {

System.out.println(str);

}

}

public class TestFactory{

//Durch @Factory, die Testmethode in der Klasse TestClass

//wird zweimal mit den Daten „k1“ und „k2“ ausgeführt

@Fabrik

public Object[] factoryMethod() {

return new Object[] { new TestClass(„K1“), new TestClass(„k2“) };

}

}