TestNG Anotácie

TestNG Anotácie
6 MIN
16 mar 2024

V tomto tutoriáli budeme študovať všetky anotácie TestNG spolu s rôznymi podporovanými atribútmi. Anotácia je značka alebo metadáta, ktoré poskytujú dodatočné informácie o triede, rozhraní alebo metóde. TestNG využíva tieto anotácie na poskytovanie niekoľkých funkcií, ktoré pomáhajú pri vytváraní robustného testovacieho frameworku. Na tomto mieste sa budeme podrobne venovať jednotlivým anotáciám TestNG a preštudujeme si ich syntax a použitie.

Obsah

@Test

@Test je najdôležitejšia a najčastejšie používaná anotácia TestNG. Používa sa na označenie metódy ako ‚Test‘. Takže každá metóda, nad ktorou vidíme anotáciu @Test, sa považuje za TestNG test.

@Test

public void sampleTest() {   

   //Any test logic

   System.out.println(„Hi! ITtester.sk here!“);   

}

Teraz sa pozrime na niektoré dôležité atribúty anotácií @Test:

1. description – atribút ‚description‘ sa používa na uvedenie popisu testovacej metódy. Zvyčajne obsahuje jednoriadkové zhrnutie testu.

@Test(description = „Test summary“)

2. dataProvider – Tento atribút pomáha pri vytváraní testov riadených údajmi. Používa sa na zadanie názvu poskytovateľa údajov pre test.

@Test(dataProvider = „name of dataProvider“)

3. priorita – Tento atribút pomáha pri určovaní priorít testovacích metód. Predvolená priorita začína hodnotou 0 a testy sa vykonávajú vo vzostupnom poradí.

@Test(priority = 2)

4. enabled – Tento atribút sa používa na určenie, či sa daná testovacia metóda spustí so sadou alebo triedou, alebo nie.

@Test(enabled = false)

5. groups – slúži na určenie skupín, do ktorých testovacia metóda patrí.

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

7. dependsOnMethods – Slúži na špecifikáciu metód, na ktorých testovacia metóda závisí. Testovacia metóda sa spustí až po úspešnom vykonaní závislých testov.

@Test(dependsOnMethods = { „dependentTestMethodName“ })

8. dependsOnGroups – Slúži na špecifikáciu skupín, na ktorých testovacia metóda závisí.

@Test(dependsOnGroups = { „dependentGroup“ })

9. alwaysRun – Ak je nastavená hodnota True, testovacia metóda sa spustí, aj keď závislé metódy zlyhajú.

@Test(alwaysRun=True)

10. timeOut – slúži na zadanie hodnoty časového limitu pre test (v milisekundách). Ak test trvá dlhšie ako zadaná hodnota časového limitu, test sa ukončí a označí sa ako neúspešný.

@Test (timeOut = 500)

@BeforeSuite

Anotovaná metóda sa spustí len raz pred spustením všetkých testov v tejto sade.

@AfterSuite

Metóda s anotáciou sa spustí len raz po vykonaní všetkých testov v tejto sade.

@BeforeClass

Metóda s anotáciou sa spustí iba raz pred vyvolaním prvej testovacej metódy v aktuálnej triede.

@AfterClass

Metóda s anotáciou sa spustí len raz po spustení všetkých testovacích metód v aktuálnej triede.

@BeforeTest

Anotovaná metóda sa spustí pred spustením akejkoľvek testovacej metódy patriacej do tried vnútri značky <test>.

@AfterTest

Metóda s anotáciou sa spustí po spustení všetkých testovacích metód patriacich do tried vnútri značky <test>.

@DataProvider

Pomocou @DataProvider môžeme vytvoriť dátovo riadený rámec, v ktorom sa údaje odovzdávajú príslušnej testovacej metóde a pre rôzne hodnoty testovacích údajov odovzdaných z metódy @DataProvider sa spustí viacero iterácií testu. Metóda anotovaná anotáciou @DataProvider vracia 2D pole alebo objekt.

//Data provider returning 2D array of 3*2 matrix

@DataProvider(name = „dataProvider1“)

   public Object[][] dataProviderMethod1() {

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

   }

   //This method is bound to the above data provider

   //The test case will run 3 times with different set of values

   @Test(dataProvider = „dataProvider1“)

   public void sampleTest(String str1, String str2) {

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

   }

@Parameter

Značka @Parameter sa používa na odovzdávanie parametrov testovacím skriptom. Hodnotu tagu @Parameter možno odovzdať prostredníctvom súboru testng.xml.

Ukážka súboru testng.xml s tagom parameter:

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

   <test name=“sampleTest“>   

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

      <classes>

         <class name=“TestFile“ />

      </classes>      

   </test>

</suite>

Ukážkový testovací skript s anotáciou @Parameter:

public class TestFile {

   @Test

   @Parameters(„sampleParamName“)

   public void parameterTest(String paramValue) {

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

   }

@Listener

TestNG nám poskytuje rôzne druhy poslucháčov, pomocou ktorých môžeme vykonať nejakú akciu v prípade, že sa spustila udalosť. Zvyčajne sa poslucháči testNG používajú na konfiguráciu hlásení a logovanie.

@Listeners(PackageName.CustomizedListenerClassName.class)

public class TestClass { 

    WebDriver driver= new FirefoxDriver();@Test 

    public void testMethod(){

    //test logic

    }

@Factory

Anotácia @Factory pomáha pri dynamickom vykonávaní testovacích prípadov. Pomocou anotácie @Factory môžeme počas behu testu odovzdať parametre celej triede testu. Odovzdané parametre môže použiť jedna alebo viac testovacích metód tejto triedy.

V nasledujúcom príklade testovacia trieda TestFactory spustí testovaciu metódu v triede TestClass s rôznymi sadami parametrov – „k1“ a „k2“.

public class TestClass{

    private String str;

    //Constructor

    public TestClass(String str) {

        this.str = str;

    }

    @Test

    public void TestMethod() {

        System.out.println(str);

    }

}

public class TestFactory{

    //Because of @Factory, the test method in class TestClass

    //will run twice with data „k1“ and „k2“

    @Factory

    public Object[] factoryMethod() {

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

    }

}