TestNG vs JUnit: Hvad er forskellen?

Indholdsfortegnelse:

Anonim

Både Testng og Junit er en testramme, der bruges til enhedstest. TestNG svarer til JUnit. Få flere funktioner tilføjes det, der gør TestNG mere kraftfuld end JUnit.

Denne tutorial er primært fokuseret på at analysere funktioner i JUnit og TestNG. Det hjælper udviklere med at beslutte, hvilken ramme der skal bruges til Unit Testing. Lad os først analysere ligheder mellem TestNG og JUnit4.

TestNG er en testramme inspireret af JUnit og NUnit.

Her er tabellen, der viser de funktioner, der understøttes af JUnit og TestNG.

JUnit4 og TestNG Feature sammenligning

Både TestNG og JUnit4 ser ens ud, bortset fra en eller to funktioner. Lad os sammenligne de to for hurtigt at beslutte, hvilken teknologi der er mere gunstig for enhedstest. Nedenstående tabel fremhæver de funktioner, der understøttes af begge:

Kommentarer

Både JUnit og TestNG bruger annoteringer, og næsten alle kommentarerne ligner hinanden.

TestNG bruger @BeforeMethod, @ AfterMethod svarende til @Before, @ After i JUnit4.

Både TestNG og Junit4 bruger @Test (timeout = 1000) til timeout. Tjek nedenstående tabel for flere detaljer-

SN Beskrivelse TestNG JUnit 4
1 Test kommentar @Prøve @Prøve
2 Udføres inden den første testmetode påberåbes i den aktuelle klasse @BeforeClass @BeforeClass
3 Kører efter alle testmetoder i den aktuelle klasse @Efter skole @Efter skole
4 Udføres før hver testmetode @BeforeMethod @Før
5 Udføres efter hver testmetode @AfterMethod @Efter
6 kommentar for at ignorere en test @Test (aktiver = falsk) @ignorere
7 kommentar med undtagelse @Test (forventetExceptions = ArithmeticException.class) @Test (forventet = ArithmeticException.class)
8 tiden er gået @Test (timeout = 1000) @Test (timeout = 1000)
9 Udføres før alle tests i pakken @BeforeSuite ikke relevant
10 Udføres efter alle test i pakken @AfterSuite ikke relevant
11 Udføres inden en test kører @BeforeTest ikke relevant
12 Udføres efter en testkørsel @AfterTest ikke relevant
13 Køres inden den første testmetode påberåbes, der tilhører en af ​​disse grupper, påberåbes @BeforeGroups ikke relevant
14 kør efter den sidste testmetode, der tilhører nogen af ​​grupperne her @AfterGroups ikke relevant

Suite test

Suiter bruges til at udføre flere tests sammen. Suiter kan oprettes ved hjælp af både TestNG og JUnit4. Suiter er dog mere magtfulde i TestNG, da det bruger meget forskellige metoder til udførelse af tests. Lad os forstå det ved hjælp af kodestykke som angivet nedenfor:

Brug af JUnit4

Nedenfor beskriver klassen brug af suite, mens du arbejder med JUnit4:

pakke guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.klasse,SuiteTest2.class,})offentlig klasse JunitTest {// Denne klasse forbliver tom, den bruges kun som indehaver af ovenstående kommentarer}

Brug af TestNG

TestNG bruger xml til at samle alle tests ét sted. Xml nedenfor beskriver brugen af ​​suite, mens du arbejder med TestNG:

Ignorer test

Ved hjælp af begge kan vi springe en test over. Lad os se den ved hjælp af kodeeksempel som angivet nedenfor:

Brug af JUnit4

Nedenfor kodestykke beskriver brugen af ​​@ignore-kommentar, mens du arbejder med JUnit4:

@Ignorereoffentlig ugyldighedsmetode1 (){System.out.println ("Brug af @Ignore ignoreres denne udførelse");}

Brug af TestNG

Nedenfor kodestykke beskriver brugen af ​​@Test (aktiveret = falsk) kommentar, mens du arbejder med TestNG:

@Test (aktiveret = falsk)offentlig ugyldig TestWithException (){System.out.println ("Metoden skal ignoreres, da den ikke er klar endnu");}

Undtagelsestest

Undtagelsestest er tilgængelig både i TestNG og JUnit4. Det bruges til at kontrollere, hvilken undtagelse kastes fra testen?

Brug af JUnit4

Nedenfor kodestykke beskriver brugen af ​​undtagelsestest, mens du arbejder med JUnit4:

@Test (forventet = ArithmeticException.class)offentlig ugyldighed divideByZero (){Int i = 1/0;}

Brug af TestNG

Nedenfor kodestykke beskriver brugen af ​​undtagelsestest, mens du arbejder med TestNG:

@Test (forventetExceptions = ArithmeticException.class)offentlig ugyldighed divideByZero (){Int i = 1/0;}

Tiden er gået

Denne funktion er implementeret både i TestNg og JUnit4.Timeout bruges til at afslutte en test, der tager længere tid end angivet tid (i millisekunder).

Brug af JUnit4

Nedenfor kodestykke beskriver brugen af ​​timeout-test, mens du arbejder med JUnit4:

@Test (timeout = 1000)offentlig ugyldighedsmetode1 (){mens (sand);}

Brug af TestNG

Nedenfor kodestykke beskriver brugen af ​​timeout-test, mens du arbejder med TestNG:

@Test (timeOut = 1000)offentlig ugyldighedsmetode1 (){mens (sand);}

Parameteriseret test

JUnit giver en lettere og læsbar tilgang til test kendt som Parameterized test. Både TestNG og JUnit understøtter parametreret test, men adskiller sig i den måde, de definerer parameterværdien på. Lad os se dette en efter en.

Brug af JUnit4

Kommentarerne "@RunWith" og "@Parameter" bruges til at angive parameterværdi for enhedstesten. Annotationen @Parameters skal returnere Liste []. Denne parameter vil blive sendt til klassekonstruktøren som et argument.

@RunWith (værdi = Parameterized.class)offentlig klasse JunitTest {privateint nummer;offentlig JunitTest6 (int-nummer){dette.nummer = antal;}@Parametersoffentlig statisk samling  data (){Objekt [] [] data = nyt objekt [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (data);}@Prøvepublic void parameterTest (){System.out.println ("Parameteriseret nummer er: + nummer);}}

Brug af TestNG

I TestNG bruges XML-fil eller "@DataProvider" til at angive en parameter til test.

Her har @Parameters-annotering erklæret i metoden brug for en parameter til testning. De data, der bruges som parameter, leveres i TestNGs XML-konfigurationsfiler. Ved at gøre dette kan vi genbruge en enkelt testcase med forskellige datasæt, og vi kan få forskellige resultater.

offentlig klassetest1 {@Prøve@Parameters (værdi = "antal")public void parameterTest (int-nummer){System.out.println ("Parameteriseret nummer er: + nummer);}}

Se nedenstående xml-fil, der skal bruges til ovenstående klasse:


Resumé :

Vi så JUnit4 og TestNG sammenligning i detaljer. Vi så også, at begge er ens undtagen parametreret test og afhængighedstest. Kort sagt kan vi sige, baseret på fleksibilitet og krav kan vi vælge en hvilken som helst af dem til Unit Testing.