TestNG oppitunti

โšก ร„lykรคs yhteenveto

TestNG on seuraavan sukupolven Java testauskehys, joka yhdistรครค Selenium jรคsenneltyรค automatisointia, monipuolista raportointia ja rinnakkaista suoritusta varten. Tรคmรค opetusohjelma kattaa keskeiset merkinnรคt, projektin mรครคrityksen Eclipse, ensimmรคisen testitapauksen kirjoittaminen, HTML-raportit ja edistyneet parametrien kรคyttรถohjeet.

  • ๐Ÿงฑ Ydinkehys: TestNG ulottuu JUnit ideoita merkintรถineen, ryhmรคpingja rinnakkainen testien suoritus Selenium sviittiรค.
  • ๐Ÿท๏ธ Merkintรถjen kulku: @Test-, @BeforeMethod-, @AfterMethod-, @BeforeTest- ja @AfterTest-sekvenssien mรครคritys, testaus ja purku.
  • ๐Ÿ—‚๏ธ Eclipse Setup: Rakenna TestNG projekti, lisรครค TestNG kirjasto ja Selenium JAR-tiedostot ja luo sitten testiluokat ohjatulla toiminnolla.
  • ๐Ÿ“Š raportointi: TestNG tuottaa teksti-, graafisia ja HTML-raportteja test-output-kansioon, mukaan lukien aikajรคrjestykseen perustuvat nรคkymรคt.
  • โš™๏ธ parametrit: Kรคytรค priority-, alwaysRun- ja dataProvider-metodeja suoritusjรคrjestyksen hallintaan ja datan syรถttรคmiseen testeihin.
  • ๐Ÿค– AI Boost: Tekoรคlykoodausavustajat kiihtyvรคt TestNG luokkien luonti, paikannuspรคivitykset ja dataProvider-scaffolding.

TestNG oppitunti

Mikรค on TestNG?

TestNG on automaatiotestauskehys, jossa โ€NGโ€ tarkoittaa โ€Next Generationโ€ -menetelmรครค. TestNG on inspiroinut JUnit ja kรคyttรครค Java merkinnรคt (@) testikulun ohjaamiseksi. Se voittaa JUnitaiemmat rajoitukset ja se on suunniteltu tekemรครคn end-to-end-testaus helpompaa.

Kanssa TestNG Voit luoda asianmukaisen raportin ja nรคhdรค heti, kuinka monta testiรค lรคpรคisi, epรคonnistui tai ohitettiin. Voit myรถs suorittaa uudelleen vain epรคonnistuneet tapaukset.

Esimerkiksi:

  • Oletetaan, ettรค sinulla on viisi testitapausta, jokainen omalla metodillaan, kirjoitettu ilman TestNGKolme onnistuu; neljรคs epรคonnistuu. Neljรคnnen korjaamisen jรคlkeen haluat suorittaa uudelleen vain sen, koska kolme ensimmรคistรค on jo onnistunut. Tรคtรค on vaikea tehdรค pelkรคllรค main()-metodilla.
  • TestNG tarjoaa a testng-failed.xml Tiedosto test-output kansio. Kyseisen XML:n suorittaminen suorittaa uudelleen vain epรคonnistuneet tapaukset.

Sen lisรคksi opit sen edut TestNG, kuinka kirjoittaa testimetodeja @Test-annotaatioiden avulla ja kuinka muuntaa luokat testipaketiksi, joka toimii Eclipse tai komentoriviltรค.

Miksi kรคyttรครค TestNG Selenium?

Oletusarvoisesti Selenium testit eivรคt tuota kauniisti muotoiltuja tuloksia. TestNG Kun testiajo suoritetaan verkkoon, se tuottaa jรคsennellyn raportin, jonka voit jakaa tiimin kanssa.

bridge Selenium kรคyttรคjรคt suosivat TestNG yli JUnit laajemman ominaisuusvalikoimansa ansiosta. Tรคrkeimmรคt ominaisuudet Selenium ovat:

  • Raportit, jotka sisรคltรคvรคt suoritettujen, hyvรคksyttyjen, hylรคttyjen ja ohitettujen testitapausten mรครคrรคn.
  • Helppo uraping testitapauksista a:n kautta testng.xml tiedosto, suoritusprioriteeteilla.
  • Toista testi useita kertoja ilman silmukoita kรคyttรคmรคllรค invocationCount.
  • Suorita useita testejรค useilla selaimilla โ€” ristiinselaimen testaus Tukea.
  • Saumaton integrointi Mavenin kanssa, Jenkinsja muut CI-tyรถkalut.
  • Readable merkinnรคt โ€” esimerkiksi @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
  • Selenium WebDriverilla ei ole natiivia raportointia; TestNG tรคyttรครค aukon puhtaalla HTML-raportilla, kuten alla olevalla.

TestNG HTML-raporttiesimerkki kohteelle Selenium testit

  • TestNG yksinkertaistaa testikoodia. Et enรครค tarvitse staattista pรครคmetodia; merkinnรคt pรครคttรคvรคt, mitรค suoritetaan ja milloin.

Tavallinen Java testiluokan rakenne pรครคmetodilla

TestNG testaa luokan rakennetta annotaatioiden avulla

  • Havaittamattomat poikkeukset kรคsitellรครคn tyylikkรครคsti TestNGNe raportoidaan epรคonnistuneina vaiheina keskeyttรคmรคttรค koko suoritusta.

Edut TestNG yli JUnit

TestNG tarjoaa kolme merkittรคvรครค etua verrattuna JUnit:

  • Merkintรถjรค on helpompi ymmรคrtรครค ja kรคyttรครค.
  • Testitapaukset voidaan ryhmitellรค ja priorisoida vรคhemmรคllรค vaivalla.
  • Rinnakkaisten testien suorittamista tuetaan suoraan pakkauksesta.

Mikรค on annotaatio TestNG?

Huomautukset sisรครคn TestNG ovat metodin ylรคpuolelle sijoitettuja koodirivejรค, jotka ohjaavat sen suoritusta. Ne alkavat aina @-symbolilla. Yksinkertainen esimerkki on esitetty alla.

esimerkki TestNG merkintรค ylรคpuolella Java menetelmรค

Merkintรถjรค kรคsitellรครคn yksityiskohtaisesti osiossa "Kรคytetyt merkinnรคt" TestNG" myรถhemmin tรคssรค opetusohjelmassa, joten yllรค oleva esimerkki on vain odotusten asettamista varten. TestNG merkintรถjรค on helpompi koodata ja lukea kuin JUnit vastineita, ja ne ovat vรคlttรคmรคttรถmiรค testejรค suoritettaessa Selenium ruudukko missรค rinnakkaissuorituksella on merkitystรค.

Kuinka kirjoittaa testitapauksia TestNG

Kirjoittaminen a TestNG Testitapaus koostuu kolmesta vaiheesta:

  1. Kirjoita liiketoimintalogiikkasi ja sijoita TestNG merkinnรคt kunkin menetelmรคn ylรคpuolella.
  2. Lisรครค metatietoja, kuten luokan nimi, ryhmรคn nimi ja paketin nimi.
  3. Suorita TestNG luokka IDE:stรคsi tai komentoriviltรค.

Luo testitapaus kรคyttรคmรคllรค TestNG Merkinnรคt

Nyt luomme ensimmรคisen testitapauksemme kรคyttรคmรคllรค TestNG merkintรถjรค SeleniumEnnen testin kirjoittamista, mรครคritรค uusi TestNG projekti vuonna Eclipse ja soita sille EtunimiTestNGprojekti.

Uuden perustaminen TestNG projekti

Vaihe 1) Napauta Tiedosto > Uusi > Java projekti.

Eclipse valikko uuden luomiseksi Java projekti

Vaihe 2) enter EtunimiTestNGprojekti projektin nimeksi ja napsauta seuraava.

Uusi Java projektiavustaja nimeltรค FirstTestNGprojekti

Vaihe 3) Tuo TestNG kirjastot. Napsauta kirjastot vรคlilehti ja sitten Lisรครค kirjastoโ€ฆ.

Kirjastot-vรคlilehti, jossa on Lisรครค kirjasto -vaihtoehto Eclipse

Vaihe 4) In Lisรครค kirjasto valintaikkuna, valitse TestNG ja valitse seuraava.

valitseminen TestNG Lisรครค kirjasto -valintaikkunassa

Vaihe 5) Napauta Suorittaa loppuun.

Kirjaston lisรคystoiminnon viimeistely

TestNG pitรคisi nyt nรคkyรค Kirjastot-luettelossa.

TestNG nรคkyvissรค Kirjastot-luettelossa

Vaihe 6) Lisรครค JAR-tiedostot, jotka sisรคltรคvรคt Selenium API. Nรคmรค tulevat Java asiakasohjain ladattu osoitteesta selenium.dev/lataukset.

Lisรครค ulkoiset JAR-tiedostot -valintaikkuna Eclipse

Siirry kansioon, jossa Selenium JAR-tiedostot tallennetaan.

valitseminen Selenium JAR-tiedostot koontipolulle

Ulkoisten JAR-tiedostojen lisรครคmisen jรคlkeen nรคytรถn pitรคisi nรคyttรครค tรคltรค.

Selenium JAR-tiedostot lisรคtty kirjastoluetteloon

Vaihe 7) Napauta Suorittaa loppuun. Uuden EtunimiTestNGprojekti nรคkyy pakettien hallinnassa.

EtunimiTestNGProjekti nรคkyy pakettien hallinnassa

Kuinka luoda uusi TestNG Testitiedosto

Kun projekti on valmis, luo uusi TestNG tiedosto.

Vaihe 1) Napsauta hiiren oikealla painikkeella src kansio ja valitse Uusi > Muuโ€ฆ.

Uusi Muut-valikko src-kansiossa kohdassa Eclipse

Vaihe 2) Laajenna TestNG kansio, valitse TestNG luokka, ja napsauta seuraava.

TestNG luokkavaihtoehto uudessa ohjatussa toiminnossa

Vaihe 3) Syรถtรค alla nรคkyvรคt arvot ja napsauta Suorittaa loppuun. Java tiedosto on nimetty EtunimiTestNGfilee.

TestNG luokan velho Firstin kanssaTestNGTiedoston arvot

Vaihe 4) Eclipse generoi TestNG alla olevaa mallia.

luotu TestNG luokkamalli Eclipse toimittaja

Ensimmรคisen koodauskokemuksesi TestNG Testitapaus

Luo ensimmรคinen testitapaus joka vahvistaa otsikon Mercury Tours kotisivut.

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

Huomioitavaa:

  • TestNG ei tarvitse a main() menetelmรคllรค.
  • Metodien ei tarvitse olla staattisia.
  • @Testata merkintรคmerkit verifyHomepageTitle() testitapauksena.
  • Merkinnรคt ovat tallennettuina org.testng.annotations.* paketti.
  • assert luokasta alkaen org.testng.Assert ajaa tarkistuksia.

Sinulla voi olla useita @Test-merkintรถjรค yhdessรค TestNG tiedosto. Kรคsittelemme sitรค tรคssรค "Kรคytetyt merkinnรคt" TestNG" osiossa.

Testin suorittaminen

Napsauta tiedostoa hiiren kakkospainikkeella ja suorita se nimellรค TestNG testiรค. Eclipse tuottaa kaksi tulostetta โ€“ tekstituloksen konsoli-ikkunassa ja graafisen tuloksen TestNG Tulosikkuna.

TestNG Tulosikkuna testituloksen kanssa

Eclipse Konsoli-ikkuna, jossa on TestNG tekstin tulostus

Raporttien tarkistaminen Luonut TestNG

Konsoli-ikkuna tarjoaa tekstipohjaisen yhteenvedon, kun taas TestNG Tulosikkuna nรคyttรครค graafisen nรคkymรคn.

Teksti vs. graafinen TestNG tulosten vertailu

HTML-raporttien luominen

TestNG voi myรถs luoda tรคydellisiรค HTML-raportteja.

Vaihe 1) Juoksun jรคlkeen EtunimiTestNGfilee, napsauta projektia hiiren kakkospainikkeella ja valitse virkistรครค.

Pรคivitรค-vaihtoehto TestNG projekti vuonna Eclipse

Vaihe 2) A testituloste kansio tulee nรคkyviin. Laajenna se ja etsi index.html โ€” viimeisimmรคn ajokerran HTML-raportti.

testitulostuskansio, jossa index.html on korostettuna

Vaihe 3) Double-klikkaus index.html avata sen sisรคltรค Eclipseselaimessa. Paina F5 pรคivittรครคksesi sivun tulevien suoritusten jรคlkeen.

TestNG HTML-indeksiraportti renderรถity kielellรค Eclipse

Kรคytetyt merkinnรคt TestNG

Olet jo nรคhnyt @Test-annotaation. Tรคmรคn osion loppuosa kรคsittelee hyรถdyllisimpiรค edistyneitรค annotaatioita.

Useita testitapauksia

Yksi TestNG tiedosto voi sisรคltรครค useita @Test-annotaatioita. Oletusarvoisesti @Test-annotaatiolla varustetut metodit suoritetaan aakkosjรคrjestyksessรค. Alla olevassa koodissa metodit c_test, a_testja b_test aakkosjรคrjestyksessรค lรคhdejรคrjestyksestรค riippumatta.

Useita @Test-metodeja yhdessรค TestNG luokka

Suorita koodi ja avaa index.html. Klikkaus Kronologinen nรคkymรค.

Useiden kronologinen nรคkymรค TestNG menetelmรคt

parametrit

Voit ohittaa oletusjรคrjestyksen kรคyttรคmรคllรค priority parametri. Parametrit ovat avainsanoja, jotka muokkaavat merkinnรคn toimintaa.

  • Anna arvo kรคyttรคmรคllรค =.
  • Rivitรค parametrit sulkeisiin, jotka on sijoitettu vรคlittรถmรคsti merkinnรคn jรคlkeen, kuten alla on esitetty.

TestNG annotaatio parametri- ja arvosyntaksilla

TestNG Suorittaa @Test-annot pienimmรคstรค prioriteettiarvosta suurimpaan. Prioriteettinumeroiden ei tarvitse olla perรคkkรคisiรค.

Tรคydellinen koodi @Test-prioriteettiparametreilla

HTML-raportti vahvistaa, ettรค metodit suoritettiin nousevassa prioriteettijรคrjestyksessรค.

TestNG raportti, joka nรคyttรครค nousevan prioriteetin mukaiset metodit

Useita parametreja

Lisรคksi priority, @Test hyvรคksyy alwaysRun parametri (tosi tai epรคtosi). Jos haluat kรคyttรครค kahta tai useampaa parametria yhdessรค merkinnรคssรค, erota ne pilkulla:

@Test(priority = 0, alwaysRun = true)

Esimerkki useista parametreista @Test-annotaation sisรคllรค

@BeforeTest ja @AfterTest

@BeforeTest Tรคmรคn annotaatioajon menetelmรคt ennen ensimmรคistรค testitapausta TestNG tiedosto.
@AfterTest Tรคmรคn annotaatioajon menetelmรคt kaikkien testitapausten jรคlkeen TestNG viilan viimeistely.

Harkitse alla olevaa koodia.

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

Taulukosta ja koodista voimme ennustaa, ettรค sekvenssi on:

  • 1. pรคivรค โ€” launchBrowser()
  • 2. pรคivรค โ€” verifyHomepageTitle()
  • 3. pรคivรค โ€” terminateBrowser()

Annotaatiolohkojen sijoittelu lรคhdetiedostossa ei vaikuta niiden suoritusjรคrjestykseen. Kokeile jรคrjestรครค menetelmรคt uudelleen alla olevan kuvan mukaisesti.

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

Suorita koodi ja tarkista tulos.

TestNG tulos vahvistaa tilauksen sekavista merkinnรถistรค huolimatta

@BeforeMethod ja @AfterMethod

@BeforeMethod Tรคmรคn annotaatioajon menetelmรคt ennen jokaista testimenetelmรครค.
@AfterMethod Tรคmรคn annotaatioajon menetelmรคt jokaisen testimenetelmรคn jรคlkeen.

In Mercury Kierrokset, oletetaan ettรค haluamme tarkistaa kahden kotisivulta saavutetun kohdesivun otsikot.

Kolme linkkiรค osoitteesta Mercury Tours kotisivut

Testin kulku on:

  • Avaa kotisivu ja tarkista sen otsikko.
  • Napsauta REKISTERร–IDY ja vahvista kohdesivun otsikko.
  • Palaa kotisivulle ja tarkista otsikko.
  • Napsauta TUKI ja vahvista kohdesivun otsikko.
  • Palaa kotisivulle ja tarkista otsikko uudelleen.

Alla oleva koodi nรคyttรครค, miten @BeforeMethod ja @AfterMethod kรคsittelevรคt toistuvat vaiheet.

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

Testin suorittamisen jรคlkeen TestNG raportoi alla olevan jรคrjestyksen.

TestNG raportoi sekvenssi kรคyttรคmรคllรค BeforeMethod- ja AfterMethod-metodeja

Lyhyesti sanottuna: aseta asennusvaiheet sisรคpuolelle @BeforeMethod ja siivous tai navigoinnin nollaus sisรคllรค @AfterMethod joten jokainen testitapaus alkaa ja pรครคttyy tunnettuun tilaan.

Yhteenveto TestNG Merkinnรคt

  • @BeforeSuite: suoritetaan ennen kaikkia sarjan testejรค.
  • @AfterSuite: suoritetaan kaikkien sviitissรค tehtyjen testien jรคlkeen.
  • @EnnenTestiรค: suoritetaan ennen kuin mikรครคn testimetodi kuuluu luokkiin tag.
  • @Jรคlkitesti: suoritetaan kaikkien luokkiin kuuluvien testimetodien jรคlkeen tag.
  • @BeforeGroups: suoritetaan vรคhรคn ennen ensimmรคistรค testimenetelmรครค, joka kuuluu mihin tahansa lueteltuun ryhmรครคn.
  • @AfterGroups: suoritetaan pian viimeisen lueteltuun ryhmรครคn kuuluvan testimenetelmรคn jรคlkeen.
  • @EnnenLuokkaa: suoritetaan ennen nykyisen luokan ensimmรคistรค testimetodia.
  • @AfterClass: suoritetaan kaikkien nykyisen luokan testimetodien jรคlkeen.
  • @BeforeMethod: suoritetaan ennen jokaista testimenetelmรครค.
  • @AfterMethod: suoritetaan jokaisen testimenetelmรคn jรคlkeen.
  • @Testata: merkitsee metodin testitapaukseksi.

UKK

JUnit 5 modernisoitu JUnit Jupiter-rajapinnan ja laajennusmallin avulla. TestNG edelleen johtaa rinnakkaissuoritusta, sarjatason ryhmรคping, dependsOn ja DataProvider. Monet Selenium joukkueiden valinta TestNG kokonaisvaltaisiin sviitteihin ja JUnit 5 yksikkรถtesteille.

Lisรครค parallel=โ€methodsโ€ tai parallel=โ€classesโ€ sekรค thread-count-attribuutti tagi testng.xml-tiedoston sisรคllรค. TestNG jakamaan sitten testimetodit sรคikeiden kesken, mikรค on ihanteellista Selenium Ruudukko- tai pilviselaimet toimivat.

@DataProvider syรถttรครค useita datajoukkoja yhteen @Test-metodiin. Jokainen rivi providerissa on yksi suoritus. Se on datapohjaisen analyysin standardimalli. Selenium testaa lomakkeita, hakukenttiรค tai kirjautumisnรคyttรถjรค vasten.

Kyllรค. AI koodausavustajat luovat TestNG runkoja, annotoi @Test-metodeja, rakenna Page Object -luokkia ja luonnostele DataProvider-taulukoita esimerkki-CSV-tiedostoista, mikรค lyhentรครค huomattavasti scaffolding-aikaa.

Generatiivinen tekoรคly kรคsittelee testng-results.xml- ja Surefire-lokeja, ryhmittelee samankaltaisia โ€‹โ€‹virheitรค, ehdottaa todennรคkรถisiรค perimmรคisiรค syitรค ja luo Jira-tikettejรค. Tรคmรค lyhentรครค epรคtasaisten testien triage-prosessia ja auttaa laadunvarmistusjohtajia priorisoimaan CI-korjauksia.

Tiivistรค tรคmรค viesti seuraavasti: