TestNG Benutzerhandbuch

โšก Intelligente Zusammenfassung

TestNG ist eine Next-Generation Java Testframework, das mit Selenium fรผr strukturierte Automatisierung, aussagekrรคftige Berichte und parallele Ausfรผhrung. Dieses Tutorial behandelt die wichtigsten Annotationen und die Projekteinrichtung in Eclipse, Schreiben des ersten Testfalls, HTML-Berichte und fortgeschrittene Parameternutzung.

  • ๐Ÿงฑ Kern-Framework: TestNG erweitert JUnit Ideen mit Anmerkungen, Gruppenpingund parallele Testausfรผhrung fรผr Selenium Suiten.
  • ๐Ÿท๏ธ Anmerkungen steuern den Ablauf: @Test, @BeforeMethod, @AfterMethod, @BeforeTest und @AfterTest Sequenzeinrichtung, Test und Abbau.
  • ๐Ÿ—‚๏ธ Eclipse Fahrwerks-Konfiguration: Build a TestNG Projekt, fรผgen Sie das hinzu TestNG Bibliothek und Selenium JAR-Dateien erstellen und anschlieรŸend mithilfe des Assistenten Testklassen generieren.
  • ๐Ÿ“Š Reporting: TestNG Erzeugt Text-, Grafik- und HTML-Berichte im Ordner test-output, einschlieรŸlich chronologischer Ansichten.
  • โš™๏ธ Parameter: Verwenden Sie priority, alwaysRun und dataProvider, um die Ausfรผhrungsreihenfolge zu steuern und Daten in die Tests einzuspeisen.
  • ๐Ÿค– KI-Boost: KI-Programmierassistenten beschleunigen TestNG Klassengenerierung, Locator-Aktualisierungen und DataProvider-Gerรผstbau.

TestNG Benutzerhandbuch

Was ist TestNG?

TestNG ist ein Framework fรผr automatisierte Tests, wobei โ€žNGโ€œ fรผr โ€žNext Generationโ€œ steht. TestNG ist inspiriert von JUnit und verwendet Java Annotationen (@) zur Steuerung des Testablaufs. Dadurch wird Folgendes รผberwunden: JUnitdie frรผheren Einschrรคnkungen von zu รผberwinden und ist darauf ausgelegt, End-to-End-Tests erleichtert.

Mit TestNG Sie kรถnnen einen aussagekrรคftigen Bericht erstellen und sofort sehen, wie viele Tests bestanden, fehlgeschlagen oder รผbersprungen wurden. Sie kรถnnen auch nur die fehlgeschlagenen Tests erneut ausfรผhren.

Beispielsweise:

  • Angenommen, Sie haben fรผnf Testfรคlle, jeder in seiner eigenen Methode, geschrieben ohne TestNGDrei Durchlรคufe sind erfolgreich; der vierte schlรคgt fehl. Nachdem der vierte Durchlauf behoben wurde, soll nur dieser erneut ausgefรผhrt werden, da die ersten drei bereits erfolgreich waren. Dies ist mit einer einfachen main()-Methode schwierig zu realisieren.
  • TestNG stellt ein testng-failed.xml Datei in das test-output Ordner. Durch Ausfรผhren dieser XML-Datei werden nur die fehlgeschlagenen Fรคlle erneut ausgefรผhrt.

Darรผber hinaus werden Sie die Vorteile von TestNGwie man Testmethoden mit @Test-Annotationen schreibt und wie man seine Klassen in eine Testsuite umwandelt, die von dort aus ausgefรผhrt wird Eclipse oder รผber die Kommandozeile.

Warum verwenden TestNG und Selenium?

StandardmรครŸig Selenium Die Tests liefern keine รผbersichtlichen Ergebnisse. TestNG Sobald der Test-Runner angeschlossen ist, erzeugt er einen strukturierten Bericht, den Sie mit dem Team teilen kรถnnen.

Most Selenium Benutzer bevorzugen TestNG gegenรผber JUnit aufgrund seines breiteren Funktionsumfangs. Die wichtigsten Merkmale fรผr Selenium sind:

  • Berichte, die die Anzahl der ausgefรผhrten, bestandenen, fehlgeschlagenen und รผbersprungenen Testfรคlle enthalten.
  • Einfache Gruppeping von Testfรคllen รผber ein testng.xml Datei mit Ausfรผhrungsprioritรคten.
  • Wiederhole einen Test mehrmals ohne Schleifen mithilfe von invocationCount.
  • Fรผhren Sie mehrere Tests auf mehreren Browsern durch โ€“ Cross-TestsBrowsertests unterstรผtzen.
  • Reibungslose Integration mit Maven, Jenkinsund andere CI-Tools.
  • Readable Annotationen โ€“ zum Beispiel @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
  • Selenium WebDriver verfรผgt รผber keine native Berichtsfunktion; TestNG Diese Lรผcke wird mit einem รผbersichtlichen HTML-Bericht wie dem folgenden geschlossen.

TestNG HTML-Berichtsbeispiel fรผr Selenium Tests

  • TestNG Vereinfacht den Testcode. Sie benรถtigen keine statische Hauptmethode mehr; Annotationen legen fest, was wann ausgefรผhrt wird.

รœblich Java Testklassenstruktur mit main-Methode

TestNG Testen Sie die Klassenstruktur mithilfe von Annotationen

  • Nicht abgefangene Ausnahmen werden von TestNGSie werden als fehlgeschlagene Schritte gemeldet, ohne dass der gesamte Lauf abgebrochen wird.

Vorteile von TestNG gegenรผber JUnit

TestNG bietet drei wesentliche Vorteile gegenรผber JUnit:

  • Anmerkungen sind leichter verstรคndlich und anwendbar.
  • Testfรคlle kรถnnen mit weniger Aufwand gruppiert und priorisiert werden.
  • Die parallele Testausfรผhrung wird standardmรครŸig unterstรผtzt.

Was ist eine Annotation in TestNG?

Anmerkungen in TestNG sind Codezeilen, die oberhalb einer Methode platziert werden, um deren Ausfรผhrung zu steuern. Sie beginnen immer mit dem @-Symbol. Ein einfaches Beispiel ist unten dargestellt.

Beispiel TestNG Anmerkung รผber einem Java Methode

Anmerkungen werden im Abschnitt ausfรผhrlich behandelt. โ€žVerwendete Anmerkungen in TestNG" Das wird spรคter in diesem Tutorial behandelt, das obige Beispiel dient also nur dazu, die Erwartungen zu verdeutlichen. TestNG Annotationen sind einfacher zu kodieren und zu lesen als die JUnit ร„quivalente, und sie sind unerlรคsslich, wenn Tests durchgefรผhrt werden auf Selenium Gitter wo parallele Ausfรผhrung wichtig ist.

So schreiben Sie Testfรคlle in TestNG

Schreiben eines TestNG Der Testfall umfasst drei Schritte:

  1. Schreiben Sie Ihre Geschรคftslogik und platzieren Sie TestNG Anmerkungen oberhalb jeder Methode.
  2. Fรผgen Sie Metadaten wie Klassenname, Gruppenname und Paketname hinzu.
  3. Fรผhren Sie die TestNG Sie kรถnnen den Kurs entweder รผber Ihre IDE oder รผber die Kommandozeile starten.

Erstellen Sie einen Testfall mit TestNG Anmerkungen

Nun erstellen wir unseren ersten Testfall mit TestNG Anmerkungen in SeleniumBevor Sie den Test schreiben, richten Sie eine neue Umgebung ein. TestNG Projekt in Eclipse und rufe es an VornameTestNGProjekt.

Einrichten eines neuen TestNG Projekt

Schritt 1) Klicken Sie auf Datei > Neu > Java Projekt.

Eclipse Menรผ zum Erstellen eines neuen Java Projekt

Schritt 2) Enter VornameTestNGProjekt als Projektnamen und klicken Weiter.

New Java Projektassistent mit dem Namen FirstTestNGProjekt

Schritt 3) Importieren Sie die TestNG Bibliotheken. Klicken Sie auf die Bibliotheken Tab und dann Bibliothek hinzufรผgenโ€ฆ.

Registerkarte โ€žBibliothekenโ€œ mit der Option โ€žBibliothek hinzufรผgenโ€œ in Eclipse

Schritt 4) Im Bibliothek hinzufรผgen Dialog wรคhlen TestNG und klicken auf Weiter.

Auswahl TestNG im Dialogfeld โ€žBibliothek hinzufรผgenโ€œ

Schritt 5) Klicken Sie auf Farbe.

Abschluss des Bibliotheks-Hinzufรผgen-Assistenten

TestNG sollte nun in der Bibliotheksliste erscheinen.

TestNG in der Bibliotheksliste sichtbar

Schritt 6) Fรผgen Sie die JAR-Dateien hinzu, die Folgendes enthalten: Selenium API. Diese stammen von der Java Clienttreiber heruntergeladen von selenium.dev/downloads.

Dialogfeld โ€žExterne JAR-Dateien hinzufรผgenโ€œ in Eclipse

Navigieren Sie zu dem Ordner, in dem sich die Selenium JAR-Dateien werden gespeichert.

Auswahl Selenium JAR-Dateien fรผr den Build-Pfad

Nach dem Hinzufรผgen der externen JAR-Dateien sollte der Bildschirm wie folgt aussehen.

Selenium JAR-Dateien wurden der Bibliotheksliste hinzugefรผgt

Schritt 7) Klicken Sie auf Farbe. Die neue VornameTestNGProjekt wird im Package Explorer angezeigt.

VornameTestNGProjekt im Package Explorer sichtbar

So erstellen Sie ein neues TestNG Testdatei

Sobald das Projekt fertig ist, erstellen Sie ein neues TestNG Datei.

Schritt 1) Klicken Sie mit der rechten Maustaste auf src Ordner und wรคhlen Sie Neu > Sonstigeโ€ฆ.

Neues Menรผ โ€žSonstigeโ€œ aus dem src-Ordner in Eclipse

Schritt 2) Erweitern Sie die TestNG Ordner auswรคhlen TestNG KlasseUnd klicken Sie auf Weiter.

TestNG Klassenoption im Neuen Assistenten

Schritt 3) Geben Sie die unten angezeigten Werte ein und klicken Sie auf Farbe. Der Java Datei heiรŸt VornameTestNGReichen Sie das.

TestNG Klassenassistent mit FirstTestNGDateiwerte

Schritt 4) Eclipse erzeugt die TestNG Vorlage siehe unten.

  TestNG Klassenvorlage in Eclipse Herausgeber

Programmieren Sie Ihren ersten TestNG Testfall

Erstelle das erste Testfall die den Titel des Mercury Homepage von Tours.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @Test
    public void verifyHomepageTitle() {
        System.out.println("launching firefox browser");
        // Selenium 4 ships Selenium Manager, so the driver path is no longer required.
        driver = new FirefoxDriver();
        driver.get(baseUrl);
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
        driver.quit();
    }
}

Folgendes ist zu beachten:

  • TestNG braucht keine main() Methode.
  • Methoden mรผssen nicht statisch sein.
  • Das @Prรผfung Anmerkungszeichen verifyHomepageTitle() als Testfall.
  • Anmerkungen befinden sich in der org.testng.annotations.* Paket.
  • Das Behaupten Klasse von org.testng.Assert Laufwerksverifizierungen.

Sie kรถnnen mehrere @Test-Annotationen in einem einzigen TestNG Datei. Das behandeln wir in der โ€žVerwendete Anmerkungen in TestNG" .

Ausfรผhren des Tests

Klicken Sie mit der rechten Maustaste auf die Datei und fรผhren Sie sie als Datei aus. TestNG Test. Eclipse erzeugt zwei Ausgaben โ€“ ein Textergebnis im Konsolenfenster und ein grafisches Ergebnis in der TestNG Ergebnisfenster.

TestNG Ergebnisfenster mit Testergebnis

Eclipse Konsolenfenster mit TestNG Textausgabe

รœberprรผfung der von erstellten Berichte TestNG

Das Konsolenfenster bietet eine textbasierte Zusammenfassung, wรคhrend TestNG Das Ergebnisfenster zeigt eine grafische Ansicht.

Text vs. Grafik TestNG Ergebnisvergleich

Generieren von HTML-Berichten

TestNG kann auch vollstรคndige HTML-Berichte generieren.

Schritt 1) Nach dem Rennen VornameTestNGReichen Sie dasKlicken Sie mit der rechten Maustaste auf das Projekt und wรคhlen Sie Inspiration.

Aktualisierungsoption fรผr die TestNG Projekt in Eclipse

Schritt 2) A Testausgabe Der Ordner wird angezeigt. Erweitern Sie ihn und suchen Sie index.html โ€” der HTML-Bericht fรผr den letzten Durchlauf.

Test-Ausgabeordner mit hervorgehobener index.html-Datei

Schritt 3) Double-klicken index.html um es innen zu รถffnen EclipseDrรผcken Sie F5, um die Seite nach dem Ausfรผhren neu zu laden.

TestNG HTML-Indexbericht gerendert in Eclipse

Verwendete Anmerkungen TestNG

Die @Test-Annotation haben Sie bereits kennengelernt. Im Folgenden werden die nรผtzlichsten fortgeschrittenen Annotationen behandelt.

Mehrere Testfรคlle

Ein einzelner TestNG Eine Datei kann mehrere @Test-Annotationen enthalten. StandardmรครŸig werden mit @Test annotierte Methoden in alphabetischer Reihenfolge ausgefรผhrt. Im folgenden Codebeispiel werden die Methoden c_test, a_test und b_test Die Reihenfolge der Quellen ist alphabetisch.

Mehrere @Test-Methoden in einem einzigen TestNG Klasse

Fรผhre den Code aus und รถffne die Datei. index.html. Klicken Sie Chronologische Ansicht.

Chronologische Ansicht von mehreren TestNG Methoden

KenngrรถรŸen

Um die Standardreihenfolge zu รผberschreiben, verwenden Sie die priority Parameters. Parameter sind Schlรผsselwรถrter, die das Verhalten einer Annotation verรคndern.

  • Weisen Sie einen Wert zu mit =.
  • Setzen Sie die Parameter in Klammern, die direkt nach der Annotation stehen, wie unten gezeigt.

TestNG Annotation mit Parameter- und Wertsyntax

TestNG Fรผhrt @Test-Annotationen von der niedrigsten zur hรถchsten Prioritรคt aus. Die Prioritรคtsnummern mรผssen nicht aufeinanderfolgend sein.

Vollstรคndiger Code mit @Test-Prioritรคtsparametern

Der HTML-Bericht bestรคtigt, dass die Methoden in aufsteigender Prioritรคtsreihenfolge ausgefรผhrt wurden.

TestNG Bericht mit den nach aufsteigender Prioritรคt ausgefรผhrten Methoden

Mehrere Parameter

Neben priority, @Test akzeptiert die alwaysRun Parameter (wahr oder falsch). Um zwei oder mehr Parameter in einer einzigen Annotation zu verwenden, trennen Sie diese durch ein Komma:

@Test(priority = 0, alwaysRun = true)

Beispiel fรผr mehrere Parameter innerhalb einer @Test-Annotation

@BeforeTest und @AfterTest

@BeforeTest Methoden unter dieser Annotation werden ausgefรผhrt vor dem ersten Testfall im TestNG Datei.
@ AfterTest Methoden unter dieser Annotation werden ausgefรผhrt Immerhin Testfรคlle in der TestNG Datei beendet.

Betrachten Sie den folgenden Code.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();
    }
}

Aus der Tabelle und dem Code lรคsst sich vorhersagen, dass die Sequenz wie folgt lauten wird:

  • 1. โ€” launchBrowser()
  • 2. โ€” verifyHomepageTitle()
  • 3. โ€” terminateBrowser()

Die Platzierung der Annotationsblรถcke in der Quelldatei hat keinen Einfluss auf deren Ausfรผhrungsreihenfolge. Versuchen Sie, die Methoden wie unten gezeigt neu anzuordnen.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @AfterTest                              // Jumbled
    public void terminateBrowser() {
        driver.quit();
    }

    @BeforeTest                             // Jumbled
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test                                   // Jumbled
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }
}

Fรผhren Sie den Code aus und รผberprรผfen Sie das Ergebnis.

TestNG Ergebnis bestรคtigt Ordnung trotz durcheinandergewรผrfelter Anmerkungen

@BeforeMethod und @AfterMethod

@BeforeMethod Methoden unter dieser Annotation werden ausgefรผhrt vor jeder Testmethode.
@ AfterMethod Methoden unter dieser Annotation werden ausgefรผhrt nach jeder Testmethode.

In Mercury Angenommen, wir mรถchten bei Touren die Titel zweier Zielseiten รผberprรผfen, die von der Startseite aus erreichbar sind.

Drei Links von Mercury Touren Homepage

Der Testablauf ist wie folgt:

  • ร–ffnen Sie die Startseite und รผberprรผfen Sie den Titel.
  • Klicken Sie auf REGISTRIEREN und รผberprรผfen Sie den Titel der Zielseite.
  • Gehen Sie zurรผck zur Startseite und รผberprรผfen Sie den Titel.
  • Klicken Sie auf SUPPORT und รผberprรผfen Sie den Titel der Zielseite.
  • Gehen Sie zurรผck zur Startseite und รผberprรผfen Sie den Titel erneut.

Der folgende Code zeigt, wie @BeforeMethod und @AfterMethod die wiederholten Schritte handhaben.

package firsttestngpackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;
    public String expected = null;
    public String actual = null;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @BeforeMethod
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }

    @Test(priority = 0)
    public void register() {
        driver.findElement(By.linkText("REGISTER")).click();
        expected = "Register: Mercury Tours";
        actual = driver.getTitle();
        Assert.assertEquals(actual, expected);
    }

    @Test(priority = 1)
    public void support() {
        driver.findElement(By.linkText("SUPPORT")).click();
        expected = "Under Construction: Mercury Tours";
        actual = driver.getTitle();
        Assert.assertEquals(actual, expected);
    }

    @AfterMethod
    public void goBackToHomepage() {
        driver.findElement(By.linkText("Home")).click();
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();
    }
}

Nach dem Ausfรผhren des Tests TestNG Die folgende Sequenz wird gemeldet.

TestNG Berichtssequenz unter Verwendung von BeforeMethod und AfterMethod

Kurz gesagt: Platzieren Sie die Einrichtungsschritte innerhalb @BeforeMethod und Aufrรคumarbeiten oder Navigations-Reset im Inneren @ AfterMethod Jeder Testfall beginnt und endet also in einem bekannten Zustand.

Zusammenfassung der TestNG Anmerkungen

  • @BeforeSuite: wird vor allen Tests in der Testsuite ausgefรผhrt.
  • @AfterSuite: wird nach allen Tests der Testsuite ausgefรผhrt.
  • @BeforeTest: wird vor jeder Testmethode ausgefรผhrt, die zu den Klassen innerhalb eines Etikett.
  • @AfterTest: wird ausgefรผhrt, nachdem alle Testmethoden der Klassen innerhalb eines Etikett.
  • @BeforeGroups: wird kurz vor der ersten Testmethode ausgefรผhrt, die zu einer beliebigen aufgelisteten Gruppe gehรถrt.
  • @AfterGroups: wird kurz nach der letzten Testmethode ausgefรผhrt, die zu einer beliebigen aufgelisteten Gruppe gehรถrt.
  • @VorDerKlasse: wird vor der ersten Testmethode in der aktuellen Klasse ausgefรผhrt.
  • @AfterClass: wird nach allen Testmethoden in der aktuellen Klasse ausgefรผhrt.
  • @BeforeMethod: wird vor jeder Testmethode ausgefรผhrt.
  • @AfterMethod: wird nach jeder Testmethode ausgefรผhrt.
  • @Prรผfen: kennzeichnet die Methode als Testfall.

Hรคufig gestellte Fragen

JUnit 5 modernisiert JUnit mit der Jupiter API und dem Erweiterungsmodell. TestNG fรผhrt weiterhin bei der parallelen Ausfรผhrung, Suite-Ebene Gruppeping, dependsOn und DataProvider. Viele Selenium Teams wรคhlen TestNG fรผr Komplett-Suiten und JUnit 5 fรผr Unit-Tests.

Fรผgen Sie parallel="methods" oder parallel="classes" sowie ein Thread-Count-Attribut hinzu. tag inside testng.xml. TestNG verteilt dann die Testmethoden auf mehrere Threads, ideal fรผr Selenium Grid- oder Cloud-Cross-Browser-Lรคufe.

@DataProvider รผbergibt mehrere Datensรคtze an eine einzelne @Test-Methode. Jede Zeile im Provider entspricht einer Ausfรผhrung. Dies ist das Standardmuster fรผr datengetriebene Tests. Selenium Tests anhand von Formularen, Suchfeldern oder Anmeldebildschirmen.

Ja. AI Codierungsassistenten generieren TestNG Skelette, @Test-Methoden annotieren, Page-Object-Klassen erstellen und DataProvider-Arrays aus Beispiel-CSVs entwerfen, wodurch die Scaffolding-Zeit deutlich reduziert wird.

Generative KI analysiert testng-results.xml und Surefire-Logs, gruppiert รคhnliche Fehler, schlรคgt wahrscheinliche Ursachen vor und erstellt Jira-Tickets. Dies beschleunigt die Fehleranalyse fehlerhafter Tests und unterstรผtzt die QA-Leitung bei der Priorisierung von CI-Korrekturen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: