TestNG - TestNG
Vývojáři | Cédric Beust, tým TestNG |
---|---|
Stabilní uvolnění | 7.0.0 / 17. srpna 2019[1] |
Úložiště | |
Napsáno | Jáva |
Operační systém | Cross-platform |
Typ | Testování jednotky nářadí |
Licence | Licence Apache 2.0[2] |
webová stránka | test |
TestNG je testování rámec pro Programovací jazyk Java vytvořil Cédric Beust a inspiroval se JUnit a NUnit. Cílem designu TestNG je pokrýt širší škálu testovacích kategorií: jednotka, funkce, end-to-end, integrace atd., S výkonnějšími a snadno použitelnými funkcemi.
Funkce
Mezi hlavní funkce TestNG patří:
- Podpora anotací.
- Podpora pro testování založené na datech / parametrizaci (s
@DataProvider
a / nebo konfigurace XML). - Podpora více instancí stejné testovací třídy (s
@Továrna
) - Flexibilní model provedení. TestNG lze spustit buď Mravenec prostřednictvím build.xml (s definovanou testovací sadou nebo bez ní) nebo pomocí pluginu IDE s vizuálními výsledky. Není
TestSuite
třídy, zatímco testovací sady, skupiny a testy vybrané ke spuštění jsou definovány a konfigurovány soubory XML. - Souběžné testování: spusťte testy v libovolně velkých fondech vláken s různými dostupnými zásadami (všechny metody ve vlastním vlákně, jedno vlákno na testovací třídu atd.) A otestujte, zda je kód bezpečný pro více vláken.
- Vkládá BeanShell pro další flexibilitu.
- Výchozí JDK funkce pro běh a protokolování (bez závislostí).
- Závislé metody pro testování aplikačních serverů.[je zapotřebí objasnění ]
- Distribuované testování: umožňuje distribuci testů na podřízených strojích.
Poskytovatel údajů
Poskytovatel dat v TestNG je metoda v testovací třídě, která poskytuje pole různých skutečných hodnot závislým testovacím metodám.
Příklad:
// Tato metoda poskytne data jakékoli testovací metodě, která deklaruje, že její poskytovatel dat má název „provider1“. @DataProvider(název = „poskytovatel1“) veřejnost Objekt[][] createData1() { vrátit se Nový Objekt[][] { { "Cedric", Nový Celé číslo(36) }, { "Anne", Nový Celé číslo(37) } }; } // Tato testovací metoda deklaruje, že její data by měla dodávat poskytovatel dat s názvem „provider1“. @Test(dataProvider = „poskytovatel1“) veřejnost prázdnota verifyData1(Tětiva n1, Celé číslo n2) { Systém.ven.tisk(n1 + " " + n2); } // Poskytovatel dat, který vrací iterátor polí parametrů. @DataProvider(název = „poskytovatel2“) veřejnost Iterátor<Objekt[]> createData() { vrátit se Nový MyIterator(...); } // Poskytovatel dat s argumentem typu java.lang.reflect.Method. // Je zvláště užitečné, když několik testovacích metod používá stejné // poskytovatel a chcete, aby vracel různé hodnoty v závislosti na // která testovací metoda slouží. @DataProvider(název = „poskytovatel3“) veřejnost Objekt[][] createData(Metoda m) { Systém.ven.tisk(m.getName()); vrátit se Nový Objekt[][] { Nový Objekt[] { "Cedric" } }; }
Vrácený typ poskytovatele dat může být jeden z následujících dvou typů:
- Pole řady objektů (
Objekt[][]
) kde velikost první dimenze je počet vyvolání testovací metody a velikost druhé dimenze obsahuje pole objektů, které musí být kompatibilní s typy parametrů testovací metody. - An
Iterátor
. Jediný rozdíl sObjekt[][]
je to, že Iterátor vám umožňuje líně vytvářet vaše testovací data. TestNG vyvolá iterátor a poté testovací metodu s parametry vrácenými tímto iterátorem jeden po druhém. To je obzvláště užitečné, pokud máte k metodě předat mnoho sad parametrů a nechcete je vytvořit všechny předem.
Podpora nástrojů
TestNG je podporován, ihned po vybalení nebo pomocí zásuvných modulů, každým ze tří hlavních prostředí Java IDE - Zatmění, IntelliJ IDEA, a NetBeans. Přichází také s vlastní úlohou pro Apache Ant a je podporován Maven vybudovat systém. The Hudson kontinuální integrace server má integrovanou podporu pro TestNG a je schopen sledovat a mapovat výsledky testů v průběhu času. Většina Java pokrytí kódu nástroje, jako např Cobertura, bezproblémově pracovat s TestNG.
Poznámka: Podpora TestNG pro Eclipse je vložena pouze na Eclipse Marketplace pro verze Eclipse do 2018-09 (4.9). U novějších verzí Eclipse musí být TestNG ručně nainstalován podle pokynů na webu TestNG.[3]
Hlášení
TestNG generuje protokoly o zkouškách ve formátech HTML a XML. Výstup XML lze transformovat pomocí úlohy Ant JUnitReport[4] generovat zprávy podobné těm, které byly získány při použití JUnit. Od verze 4.6 TestNG také poskytuje reportérské API[5] který umožňuje generátory zpráv třetích stran, jako je ReportNG,[6]PDFngreport[7] a TestNG-XSLT,[8] být použit.
Srovnání s JUnit
Rozdíly a výhody obou zdánlivě konkurenčních nástrojů Java, TestNG a JUnit, byly diskutovány po celé desetiletí. Oba tábory mají silné zázemí a příznivce. Přetečení zásobníku diskuse tuto kontroverzi odrážejí.[9][10][11]
Anotace
V JUnit 4 musí být metody @BeforeClass a @AfterClass deklarovány jako statické. TestNG nemá toto omezení.
TestNG poskytl další čtyři páry pro nastavení / odtržení pro sadu, test a skupiny, tj. @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup a @AfterGroup, @BeforeMethod a @ AfterMethod.TestNG poskytuje širokou škálu podpory pro automatizaci aplikace využívající selen.
Parametrizované testování
Parametrizované testování je implementován v obou nástrojích, ale zcela odlišnými způsoby.
TestNG má dva způsoby, jak poskytnout různé hodnoty parametrů testovací metodě: nastavením testng.xml, a definováním a @DataProvider metoda.
V JUnit 4, @RunWith a @Parametry se používají společně k usnadnění parametrizovaných testů, zatímco @ Parametry metoda musí vrátit List [] se všemi skutečnými hodnotami, které se přivedou do vyhrazeného konstruktoru třídy jako argument. V JUnit5 je také @ParameterizedTest anotace, která umožňuje vytvoření parametrizované testovací funkce.[12]
Závěr
JUnit je ve výchozím nastavení často dodáván s běžnými IDE, což přispívá k jeho širší popularitě. Cíl TestNG je však mnohem širší, což zahrnuje nejen testování jednotek, ale také podporu integrace a akceptační testování atd. Který z nich je lepší nebo vhodnější, závisí na kontextech a požadavcích použití.
Viz také
Reference
- ^ Stránka vydání GitHub
- ^ „Licence Apache verze 2.0“. Leden 2004. Archivovány od originál dne 21.12.2013.
- ^ https://marketplace.eclipse.org/content/testng-eclipse
- ^ JUnitReport Archivováno 2010-02-24 na Wayback Machine
- ^ Vyhlášení TestNG 4.6
- ^ ReportNG 1.0 Final Vydáno
- ^ PDFngreport 1.0.0
- ^ Zprávy TestNG XSL
- ^ „Junit vs TestNG“. stackoverflow.com.
- ^ „JUnit vs TestNG“. stackoverflow.com. Archivovány od originál dne 02.02.2014.
- ^ „Který rámec UnitTest se teď naučit pro Javu?“. stackoverflow.com.
- ^ „Uživatelská příručka JUnit 5“. junit.org.
- ^ „Co je TestNG?“. qacreators.com.