Tiek „Testng“, tiek „Junit“ yra testavimo sistema, naudojama vieneto testavimui. „TestNG“ yra panašus į „JUnit“. Prie jo pridedama dar keletas funkcijų, dėl kurių „TestNG“ yra galingesnis nei „JUnit“.
Ši pamoka daugiausia skirta analizuoti „JUnit“ ir „TestNG“ ypatybes. Tai padeda kūrėjams nuspręsti, kuri sistema turėtų būti naudojama vieneto testavimui. Pirmiausia išanalizuokime „TestNG“ ir „JUnit4“ panašumus.
„TestNG“ yra „JUnit“ ir „NUnit“ įkvėpta testavimo sistema.
Čia yra lentelė, rodanti funkcijas, kurias palaiko „JUnit“ ir „TestNG“.
„JUnit4“ ir „TestNG“ funkcijų palyginimas
Tiek „TestNG“, tiek „JUnit4“ atrodo panašiai, išskyrus vieną ar dvi funkcijas. Leiskite palyginti juos abu, kad galėtume greitai nuspręsti, kuri technologija yra palankesnė vieneto testavimui. Žemiau esančioje lentelėje pateikiamos abiejų palaikomos funkcijos:
Anotacijos
Tiek JUnit, tiek TestNG naudoja anotacijas ir beveik visos anotacijos atrodo panašiai.
„TestNG“ JUnit4 naudoja @BeforeMethod, @ AfterMethod, panašų į @Before, @ After.
Tiek „TestNG“, tiek „Junit4“ skirtam laikui naudoja „@Test“ (skirtasis laikas = 1000). Norėdami sužinoti daugiau, patikrinkite toliau pateiktą lentelę-
SN | apibūdinimas | TestNG | 4 vienetas |
---|---|---|---|
1 | Testo anotacija | @Test | @Test |
2 | Vykdoma prieš pradedant taikyti pirmąjį bandymo metodą dabartinėje klasėje | @BeforeClass | @BeforeClass |
3 | Vykdo po visų dabartinės klasės bandymų metodų | @Po pamokų | @Po pamokų |
4 | Vykdoma prieš kiekvieną bandymo metodą | @BeforeMethod | @Prieš |
5 | Vykdoma po kiekvieno bandymo metodo | @PoMetodas | @Po |
6 | anotacija ignoruoti testą | @Test (įgalinti = klaidinga) | @ignore |
7 | išimties anotacija | @Test (numatytasExceptions = ArithmeticException.class) | @Test (tikėtinas = ArithmeticException.class) |
8 | laikas baigėsi | @Test (skirtasis laikas = 1000) | @Test (skirtasis laikas = 1000) |
9 | Vykdoma prieš visus bandymus komplekte | @BeforeSuite | nėra |
10 | Vykdo po visų bandymų komplekte | @AfterSuite | nėra |
11 | Vykdoma prieš bandymą | @BeforeTest | nėra |
12 | Vykdoma po bandymo | @AfterTest | nėra |
13 | Vykdomas prieš pradedant taikyti pirmąjį bandymo metodą, kuris priklauso bet kuriai iš šių grupių | @BeforeGroups | nėra |
14 | paleisti po paskutinio bandymo metodo, kuris priklauso bet kuriai iš čia esančių grupių | @AfterGroups | nėra |
„Suite Test“
Komplektai naudojami kartu atlikti kelis testus. Komplektus galima sukurti naudojant „TestNG“ ir „JUnit4“. Tačiau „TestNG“ programinės įrangos paketai yra galingesni, nes bandymams atlikti naudojamas labai skirtingas metodas. Supraskime tai naudodami toliau pateiktą kodo fragmentą:
Naudojant JUnit4
Žemiau klasėje aprašomas „suite“ naudojimas dirbant su „JUnit4“:
paketas guru99.junit;importuoti org.junit.runner.RunWith;importuoti org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,„SuiteTest2.class“,})viešoji klasė „JunitTest“ {// Ši klasė lieka tuščia, ji naudojama tik kaip minėtų anotacijų turėtoja}
Naudojant TestNG
„TestNG“ naudoja xml, kad sujungtų visus testus vienoje vietoje. Žemiau xml aprašomas „Suite“ naudojimas dirbant su „TestNG“:
Nepaisyti testo
Naudodami abu galime praleisti testą. Pažiūrėkime jį naudodami kodo pavyzdį, kaip nurodyta toliau:
Naudojant JUnit4
Žemiau esančiame kodo fragmente aprašomas @ignore komentaro naudojimas dirbant su „JUnit4“:
@ Ignoruotipublic void metodas1 (){System.out.println ("Naudojant @Ignore, šis vykdymas nepaisomas");}
Naudojant TestNG
Žemiau esančiame kodo fragmente aprašomas @Test (enabled = false) anotacijos naudojimas dirbant su TestNG:
@Test (įjungta = klaidinga)public void TestWithException (){System.out.println ("Metodo reikia nepaisyti, nes jis dar neparengtas");}
Išimties testas
Išimties testavimą galima atlikti naudojant „TestNG“ ir „JUnit4“. Jis naudojamas tikrinti, kuri išimtis išmetama iš testo?
Naudojant JUnit4
Žemiau esančiame kodo fragmente aprašomas išimties testo naudojimas dirbant su „JUnit4“:
@Test (tikėtinas = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Naudojant TestNG
Žemiau esančiame kodo fragmente aprašomas išimties testo naudojimas dirbant su „TestNG“:
@Test (numatytasExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Laikas baigėsi
Ši funkcija įdiegta ir „TestNg“, ir „JUnit4“. Laikas yra naudojamas bandymui, kuris užtrunka ilgiau nei nurodytas laikas (milisekundėmis), nutraukti.
Naudojant JUnit4
Žemiau esančiame kodo fragmente aprašomas skirtojo laiko bandymo naudojimas dirbant su „JUnit4“:
@Test (skirtasis laikas = 1000)public void metodas1 (){o (tiesa);}
Naudojant TestNG
Žemiau esančiame kodo fragmente aprašomas skirtojo laiko bandymo naudojimas dirbant su „TestNG“:
@Test (timeOut = 1000)public void metodas1 (){o (tiesa);}
Parametruotas testas
„JUnit“ suteikia lengviau ir lengviau suprantamą testą, vadinamą „Parameterized test“. Tiek „TestNG“, tiek „JUnit“ palaiko parametrų testavimą, tačiau skiriasi tuo, kaip jie apibrėžia parametro vertę. Leiskite pamatyti tai po vieną.
Naudojant JUnit4
Anotacijos „@RunWith“ ir „@Parameter“ naudojamos norint pateikti parametro vertę vieneto bandymui. Anotacija @Parameters turi grąžinti sąrašą []. Šis parametras bus perduotas klasės konstruktoriui kaip argumentas.
@RunWith (reikšmė = Parameterized.class)viešoji klasė „JunitTest“ {privatint numeris;public JunitTest6 (int numeris){this.number = skaičius;}@Parametersviešasis statinis rinkinys
Naudojant TestNG
Programoje TestNG bandymo parametrui pateikti naudojamas XML failas arba „@DataProvider“.
Čia @Parameters anotacijai, deklaruotai metodu, reikia parametro testavimui. Duomenys, naudojami kaip parametras, bus pateikti TestNG XML konfigūracijos failuose. Tai darydami galime pakartotinai naudoti vieną bandymo atvejį su skirtingais duomenų rinkiniais ir galime gauti skirtingus rezultatus.
viešosios klasės testas1 {@Test@Parameters (reikšmė = "skaičius")public void parametras „Test“ (int numeris){System.out.println ("Parametruotas skaičius yra: + skaičius);}}
Žiūrėkite žemiau esantį xml failą, kuris bus naudojamas aukščiau pamokai:
Santrauka:
Išsamiau matėme „JUnit4“ ir „TestNG“ palyginimus. Mes taip pat matėme, kad abu yra panašūs, išskyrus parametrų testą ir priklausomybės testą. Trumpai tariant, galime pasakyti, kad remdamiesi lankstumu ir reikalavimais galime pasirinkti bet kurį iš jų vieneto testavimui.
- Kitas