TestNG vs JUnit - Erinevus nende vahel
Peamine erinevus TestNG ja JUnit
- TestNG on Java-pรตhine raamistik, samas JUnit on JAVA avatud lรคhtekoodiga รผksuse testimise raamistik.
- Vรตrreldes TestNG Vs JUnit, TestNG mรคrkusi on lihtsam kasutada ja mรตista kui JUnit.
- TestNG vรตimaldab meil luua paralleelseid teste, samas JUnit ei toeta paralleeltestide kรคitamist.
- In TestNG, Testjuhtumeid saab rรผhmitada, kui see on JUnit, Testide rรผhmitamine ei ole vรตimalik.

Mis on TestNG?
TestNG on automatiseerimise testimise raamistik, milles NG tรคhistab "jรคrgmist pรตlvkonda". TestNG on inspireeritud JUnit mis kasutab mรคrkusi (@). TestNG รผletab puudused JUnit ja on mรตeldud valmistamiseks otsast lรตpuni testimine lihtne.
Kasutamine TestNG, saate luua korraliku aruande ja saate hรตlpsalt teada, kui palju testjuhtumeid on lรคbitud, ebaรตnnestunud ja vahele jรคetud. Ebaรตnnestunud testjuhtumeid saate lรคbi viia eraldi.
Mis on Junit?
JUnit on avatud lรคhtekoodiga รผksus Testimine JAVA raamistik. See on kasulik Java Arendajad kirjutavad ja kรคitavad korratavaid teste. Algselt arendavad seda Erich Gamma ja Kent Beck. See on xUnit arhitektuuri nรคide. Nagu nimigi รผtleb, kasutatakse seda รksuse testimine vรคikesest koodijupist.
Arendajad, kes jรคrgivad testipรตhist metoodikat, peavad enne mis tahes koodi kirjutama ja tรคitma รผksuse testi.
Kui olete koodiga lรตpetanud, peaksite tรคitma kรตik testid ja see peaks lรคbima. Iga kord, kui kood lisatakse, peate uuesti kรคivitama kรตik testjuhtumid ja veenduma, et miski pole katki.
Erinevused JUnit ja TestNG
Mรตlemad TestNG ja JUnit4 nรคeb vรคlja sarnane, vรคlja arvatud รผks vรตi kaks funktsiooni. Vรตrrelgem neid kahte, et kiiresti otsustada, milline tehnoloogia on รผhikutestimise jaoks soodsam. Allolevas tabelis on esile tรตstetud funktsioonid, mida mรตlemad toetavad:
Annotatsioonid
Mรตlemad JUnit ja TestNG kasutab mรคrkusi ja peaaegu kรตik annotatsioonid nรคevad vรคlja sarnased.
TestNG kasutab @BeforeMethod ,@AfterMethod sarnaselt @Before ,@After in JUnit4.
Mรตlemad TestNG ja Junit4 kasutab ajalรตpuks @Test(timeout = 1000). Lisateavet vaadake allolevast tabelist-
| SNA | Kirjeldus | TestNG | JUnit 4 |
|---|---|---|---|
| 1 | Testannotatsioon | @Test | @Test |
| 2 | Kรคivitub enne, kui praeguses klassis kรคivitatakse esimene testmeetod | @BeforeClass | @BeforeClass |
| 3 | Kรคivitab pรคrast kรตiki praeguse klassi katsemeetodeid | @AfterClass | @AfterClass |
| 4 | Teostatakse enne iga katsemeetodit | @BeforeMethod | @Enne |
| 5 | Kรคivitub pรคrast iga katsemeetodit | @AfterMethod | @Pรคrast |
| 6 | annotatsioon testi ignoreerimiseks | @Test(enable=false) | @ignoreerima |
| 7 | annotatsioon erandiks | @Test(expectedExceptions = AritmeetilineErand.klass) | @Test(oodatav = AritmeetilineErand.klass) |
| 8 | timeout | @Test(ajalรตpp = 1000) | @Test(ajalรตpp = 1000) |
| 9 | Kรคivitub enne kรตiki komplekti kuuluvaid teste | @BeforeSuite | n / a |
| 10 | Kรคivitab pรคrast kรตiki komplekti tehtud teste | @AfterSuite | n / a |
| 11 | Kรคivitub enne testi kรคivitamist | @BeforeTest | n / a |
| 12 | Kรคivitub pรคrast katset | @AfterTest | n / a |
| 13 | Kรคivitub enne, kui kรคivitatakse esimene testmeetod, mis kuulub mรตnda neist rรผhmadest | @BeforeGroups | n / a |
| 14 | kรคivitada pรคrast viimast testimismeetodit, mis kuulub mรตnda siinsetest rรผhmadest | @AfterGroups | n / a |
Sviidi test
Sviite kasutatakse mitme testi koos sooritamiseks. Sviite saab luua mรตlemat kasutades TestNG ja JUnit4. Sviidid on aga vรตimsamad TestNG kuna see kasutab testide lรคbiviimiseks vรคga erinevaid meetodeid. Mรตistame seda allpool toodud koodilรตigu abil:
Kasutamine JUnit4
Allpool klass kirjeldab komplekti kasutamist sellega tรถรถtamisel JUnit4:
package guru99.junit;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
SuiteTest1.class,
SuiteTest2.class,
})
public class JunitTest {
// This class remains empty,it is used only as a holder for the above annotations
}
Kasutamine TestNG
TestNG kasutab xml-i, et koondada kรตik testid รผhte kohta. Allpool xml kirjeldab komplekti kasutamist TestNG:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" > <suite name="My test suite"> <test name="testing"> <classes> <class name="com.guru99.SuiteTest1" /> <class name="com.guru99.SuiteTest2" /> </classes> </test> </suite>
Ignoreeri testi
Mรตlemat kasutades saame testi vahele jรคtta. Vaatame seda allpool toodud koodinรคite abil:
Kasutamine JUnit4
Allpool koodilรตik kirjeldab @ignore annotatsiooni kasutamist sellega tรถรถtamisel JUnit4:
@Ignore
public void method1()
{
System.out.println("Using @Ignore , this execution is ignored");
}
Kasutamine TestNG
Allpool koodilรตik kirjeldab @Test(enabled=false) mรคrkuse kasutamist sellega tรถรถtamisel TestNG:
@Test(enabled=false)
public void TestWithException()
{
System.out.println("Method should be ignored as it's not ready yet");
}
Erandi test
Erandi testimine on saadaval mรตlemas riigis TestNG ja JUnit4. Seda kasutatakse kontrollimiseks, milline erand on testist vรคlja visatud?
Kasutamine JUnit4
Allpool koodilรตik kirjeldab erandite testi kasutamist sellega tรถรถtamisel JUnit4:
@Test(expected = ArithmeticException.class)
public void divideByZero()
{
Int i = 1/0;
}
Kasutamine TestNG
Allpool koodilรตik kirjeldab erandite testi kasutamist sellega tรถรถtamisel TestNG:
@Test(expectedExceptions = ArithmeticException.class)
public void divideByZero()
{
Int i = 1/0;
}
Aegumine
Seda funktsiooni rakendatakse nii TestNg kui ka JUnit4. Timeout kasutatakse testi lรตpetamiseks, mis vรตtab kauem aega kui mรครคratud aeg (millisekundites).
Kasutamine JUnit4
Allpool koodilรตik kirjeldab ajalรตpu testi kasutamist sellega tรถรถtamisel JUnit4:
@Test(timeout = 1000)
public void method1()
{
while (true);
}
Kasutamine TestNG
Allpool koodilรตik kirjeldab ajalรตpu testi kasutamist sellega tรถรถtamisel TestNG:
@Test(timeOut = 1000)
public void method1()
{
while (true);
}
Parameetriline test
JUnit pakub lihtsamat ja loetavamat lรคhenemist testimiseks, mida nimetatakse parameetritestiks. Mรตlemad TestNG ja JUnit toetab parameetritega testimist, kuid erinevad parameetri vรครคrtuse mรครคratlemise viisi poolest. Vaatame seda รผkshaaval.
Kasutamine JUnit4
Mรคrkusi "@RunWith" ja "@Parameter" kasutatakse รผhikutesti parameetri vรครคrtuse andmiseks. Mรคrkus @Parameters peab tagastama List[] . See parameeter edastatakse argumendina klassi konstruktorisse.
@RunWith(value = Parameterized.class)
public class JunitTest{
privateint number;
public JunitTest6(int number)
{
this.number = number;
}
@Parameters
public static Collection<Object[]> data()
{
Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
returnArrays.asList(data);
}
@Test
public void parameterTest()
{
System.out.println("Parameterized Number is : " + number);
}
}
Kasutamine TestNG
In TestNG, XML-faili vรตi "@DataProvider" kasutatakse testimise parameetri pakkumiseks.
Siin vajab meetodis deklareeritud @Parameters annotatsioon testimiseks parameetrit. Parameetrina kasutatavad andmed esitatakse TestNGXML-i konfiguratsioonifailid. Seda tehes saame singlit uuesti kasutada Testjuhtum erinevate andmekogumitega ja saame erinevaid tulemusi.
public class Test1 {
@Test
@Parameters(value="number")
public void parameterTest(int number)
{
System.out.println("Parameterized Number is : " + number);
}
}
Vaadake allolevat xml-faili, mida kasutatakse รผlaltoodud klassi jaoks:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
<parameter name="number" value="2"/>
<classes>
<class name="com.guru99.Test1" />
</classes>
</test>
</suite>
kokkuvรตte
Me nรคgime JUnit4 ja TestNG vรตrdlus detailides. Samuti nรคgime, et mรตlemad on sarnased, vรคlja arvatud parameetritega test ja sรตltuvustest. Lรผhidalt vรตib รถelda, et paindlikkuse ja nรตuete alusel saame รผksuse testimiseks valida รผhe neist.

