TestNG Anotácie

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