JUnit Jegyzetek bemutató példával

Tartalomjegyzék:

Anonim

Mi a JUnit kommentárok?

A JUNIT ANNOTATIONS a szintaktikus metaadatok speciális formája, amely hozzáadható a Java forráskódjához a jobb olvashatóság és struktúra érdekében. A változók, paraméterek, csomagok, módszerek és osztályok feljegyezhetők. A Junit4-ben bevezették a kommentárokat, amelyek a Java kódot olvashatóbbá és egyszerűbbé teszik. Ez az a nagy különbség a Junit3 és a Junit4 között, hogy a Junit4 annotáción alapszik.

A Junit5 annotációinak ismeretében könnyen megtanulhatja és megvalósíthatja a JUnit tesztet. Az alábbiakban felsoroljuk a fontos és gyakran használt kommentárokat:

S.No. Megjegyzések Leírás
1. @Teszt Ez a megjegyzés az org.junit.TestCase cseréje, amely jelzi, hogy a public void módszer, amelyhez csatolva, tesztesetként futtatható.
2. @Előtt Ezt a kommentárt akkor használják, ha minden teszteset előtt végrehajtani akar egy állítást, például előfeltételeket.
3. @Óra előtt Ezt a jegyzetet akkor kell használni, ha néhány utasítást szeretne végrehajtani, mielőtt az összes tesztesetet (pl. Tesztkapcsolat) az összes teszteset előtt végre kell hajtani.
4. @Után Ez a megjegyzés akkor használható, ha minden teszteset után néhány utasítást szeretne végrehajtani, például a változók alaphelyzetbe állításához, ideiglenes fájlok, változók törléséhez stb.
5. @Óra után Ez a megjegyzés akkor használható, ha néhány állítást az összes teszteset után végre akar hajtani, például erőforrások felszabadítása az összes tesztesemény végrehajtása után.
6. @ Nem vesz tudomást Ez a megjegyzés akkor használható, ha a teszt végrehajtása során figyelmen kívül akar hagyni egyes utasításokat, például egyes tesztesetek letiltását a teszt végrehajtása során.
7. @Test (időtúllépés = 500) Ez a megjegyzés akkor használható, ha a teszt végrehajtása során szeretne beállítani egy időkorlátot, például, ha valamilyen SLA (Service level Agreement) alapján dolgozik, és a teszteket meghatározott időn belül be kell fejezni.
8. @Test (várható = IllegalArgumentException.class) Ez a megjegyzés akkor használható, ha a teszt végrehajtása során valamilyen kivételt szeretne kezelni. Például, ha azt szeretné ellenőrizni, hogy egy adott módszer megad-e meghatározott kivételt vagy sem.

Ebben az oktatóanyagban megtanulja-

  • Példa JUnit kommentárokra
  • JUnit Assert osztály
  • JUnit tesztesetek osztály
  • JUnit TestResult osztály
  • JUnit Test Suite osztály

Példa JUnit kommentárokra

Hozzunk létre egy osztályt, amely egyszerű nyomtatott utasításokkal lefedi a fontos JUnit kommentárokat, és futtassuk le egy teszt futtató osztállyal:

1. lépés: Fontolja meg a java osztályt, amelynek különböző módszerei vannak a fent felsorolt ​​kommentárokhoz csatolva:

JunitAnnotationsExample.java

csomag guru99.junit;statikus org.junit.Assert.assertEquals importálása;import statikus org.junit.Assert.assertFalse;import java.util.ArrayList;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.junit.Test;nyilvános osztály JunitAnnotationsExample {privát ArrayList  lista;@Óra előttpublic static void m1 () {System.out.println ("A @BeforeClass használatával, minden teszteset előtt végrehajtva");}@Előttpublic void m2 () {list = new ArrayList  ();System.out.println ("Az @Before kommentárok használata, minden tesztesemény előtt végrehajtva");}@Óra utánpublic static void m3 () {System.out.println ("A @AfterClass használata, minden teszteset után végrehajtva");}@Utánpublic void m4 () {list.clear ();System.out.println ("A @After használata, minden teszteset után végrehajtva");}@Tesztpublic void m5 () {list.add ("teszt");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Figyelmen kívül hagynipublic void m6 () {System.out.println ("Az @Ignore használatával ezt a végrehajtást figyelmen kívül hagyjuk");}@Test (időtúllépés = 10)public void m7 () {System.out.println ("A @Test (timeout) használatával a timeout kikényszerítésére használható a JUnit4 tesztesetben");}@Test (várható = NoSuchMethodException.class)public void m8 () {System.out.println ("A @Test (várható) használatával a kivitel során ellenőrizni fogja a meghatározott kivételeket");}}

2. lépés : Hozzunk létre egy teszt futó osztályt a fenti teszt végrehajtásához:

TestRunner.java

csomag guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;nyilvános osztály TestRunner {public static void main (String [] érvel) {Eredmény eredménye = JUnitCore.runClasses (JunitAnnotationsExample.class);for (Hiba hiba: result.getFailures ()) {System.out.println (fail.String ());}System.out.println ("Result ==" + result.wasSuccessful ());}}

Várható eredmény

  • Az összes tesztesetet egyenként hajtják végre, és az összes nyomtatott utasítás látható a konzolon.
  • Amint azt a fenti @Before táblázat tárgyalja, a @BeforeClass [m1 () és m2 ()] módszert minden tesztesemény előtt, ill.
  • Ugyanígy a @ utána, az @ utóosztály (metódus m3 () és az m4 () metódus) minden teszteset után, illetve az összes teszteset után végrehajtásra kerül. A @ignore (m6 () módszer) a teszt figyelmen kívül hagyásaként kezelendő.

Elemezzük részletesen a fenti java osztályban használt teszteseteket:

  1. Vegye figyelembe az m5 () módszert az alábbiak szerint:
@Tesztpublic void m5 () {list.add ("teszt");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}

A fenti módszerben, amikor hozzáad egy karakterláncot a "list" változóhoz, így

  • A list.isEmpty () hamis értéket ad vissza.
  • Az assertFalse (list.isEmpty ()) true értéket kell adnia.
  • Ennek eredményeként a teszteset átmegy .

Mivel csak egy karakterláncot adott hozzá a listához, a méret egy.

  • A list.size () értékének vissza kell adnia az int értékét "1" -ként.
  • Tehát az assertEquals (1, list.size ()) -nek igaznak kell lennie.
  • Ennek eredményeként a teszteset átmegy .
  1. Tekintsük az m7 () módszert az alábbiak szerint:
@Test (időtúllépés = 10)public void m7 () {System.out.println ("A @Test (timeout) használatával a timeout kikényszerítésére használható a JUnit4 tesztesetben");}

Amint azt fentebb tárgyaltuk, a @Test (időtúllépés = 10) jelölést használjuk az időtúllépés érvényesítésére a tesztesetben.

  1. Tekintsük az m8 () módszert az alábbiak szerint:
@Test (várható = NoSuchMethodException.class)public void m8 () {System.out.println ("A @Test (várható) használatával a kivitel során ellenőrizni fogja a meghatározott kivételeket");}

Amint azt fentebb tárgyaltuk, a @Test (várható) a végrehajtása során ellenőrzi a megadott kivételeket, így az m8 () metódus "Nincs ilyen kivétel". Ennek eredményeként a teszt kivétellel végrehajtásra kerül.

Mivel minden teszteset sikeresen teljesül, ez sikeres tesztfuttatást eredményez.

Tényleges eredmény

Mivel a fenti példában három teszteset van, az összes tesztesetet egyenként hajtják végre. Lásd az alábbi kimenetet :

Lásd az alábbiakban a konzolon látható nyomtatott utasításokat:

A @BeforeClass használatával, minden teszteset előtt végrehajtva

A @Before kommentárok használatával, minden tesztesemény előtt végrehajtva

A @After használatával, minden teszteset után végrehajtva

A @Before kommentárok használatával, minden tesztesemény előtt végrehajtva

A @Test (timeout) használatával az időtúllépés kikényszerítésére használható a JUnit4 tesztesetben

A @After használatával, minden teszteset után végrehajtva

A @Before kommentárok használatával, minden tesztesemény előtt végrehajtva

A @Test (várható) használatával a kivitel során ellenőrizni fogja a megadott kivételeket

A @After használatával, minden teszteset után végrehajtva

A @AfterClass használatával, minden teszteset után végrehajtva

JUnit Assert osztály

Ez az osztály egy csomó állítási módszert kínál, amelyek hasznosak egy teszteset megírásához. Ha minden állítás sikeres, akkor a teszt eredményei sikeresek. Ha bármely állítás meghiúsul, a teszt eredményei sikertelenek.

Mint korábban látta, az alábbi táblázat fontos Assert módszereket és leírást ismertet:

S.No. Módszer Leírás
1. void assertEquals (logikai várható, logikai aktuális) Ellenőrzi, hogy két érték egyenlő-e az Object class egyenlő módszerével
2. void assertFalse (logikai feltétel) A funkció annak ellenőrzése, hogy egy feltétel hamis-e.
3. void assertNotNull (Objektum objektum) Az "assertNotNull" funkcióval ellenőrizni kell, hogy egy objektum nem null-e.
4. void assertNull (objektum objektum) Az "assertNull" funkcióval ellenőrizni kell, hogy egy objektum null.
5. void assertTrue (logikai feltétel) Az "assertTrue" funkcióval ellenőrizni kell, hogy egy feltétel igaz-e.
6. void fail () Ha bármilyen állítási hibát szeretne dobni, akkor a fail () van, amely mindig kudarcos ítéletet eredményez.
7. void assertSame ([karakterlánc üzenet] Az "assertSame" funkció annak ellenőrzése, hogy a két objektum ugyanarra az objektumra vonatkozik-e.
8. void assertNotSame ([karakterlánc-üzenet] Az "assertNotSame" funkció annak ellenőrzése, hogy a két objektum nem ugyanarra az objektumra vonatkozik-e.

JUnit tesztesetek osztály

Több teszt futtatásához a TestCase osztály elérhető az org.junit.TestCase csomagokban. A @Test kommentár elmondja a JUnit-nek, hogy ez a public void módszer (itt a Test Case), amelyhez kapcsolódik, tesztesetként futtatható.

Az alábbi táblázat néhány fontos módszert mutat be az org.junit.TestCase osztályban:

S.No. Módszer Leírás
1. int countTestCases () Ezt a módszert arra használják, hogy megszámolja, hány tesztesetet hajtottak végre futtatással (TestResult tr) .
2. TestResult createResult () Ezt a módszert használják egy TestResult objektum létrehozására .
3. Karakterlánc getName () Ez a módszer egy stringet ad vissza, amely nem más, mint egy TestCase .
4. TestResult run () Ezzel a módszerrel olyan tesztet lehet végrehajtani, amely egy TestResult objektumot ad vissza
5. void run (TestResult eredmény) Ezzel a módszerrel olyan tesztet lehet végrehajtani, amelynek olyan TestResult objektuma van, amely nem ad semmit.
6. void setName (karakterlánc neve) Ezt a módszert használják a TestCase nevének beállításához .
7. void setUp () Ezzel a módszerrel erőforrás-társítási kódot írnak. pl. Hozzon létre egy adatbázis-kapcsolatot.
8. void tearDown () Ezt a módszert használják az erőforrás kiadási kód írására. pl. az adatbázis-kapcsolat feloldása a tranzakciós művelet elvégzése után.

JUnit TestResult osztály

Teszt végrehajtásakor eredményt ad vissza ( TestResult objektum formájában ). Ez a TestResult objektum felhasználható a kapott objektum elemzésére. Ez a teszt eredmény lehet sikertelen vagy sikeres. Az alábbi táblázatban láthatja az org.junit.TestResult osztályban alkalmazott fontos módszereket:
S.No. Módszer Leírás
1. void addError (teszt teszt, dobható t) Ezt a módszert akkor alkalmazzák, ha hibát kell hozzáadni a teszthez.
2. void addFailure (Teszt, AssertionFailedError t) Ezt a módszert akkor alkalmazzák, ha meg kell adni egy hibát a hibák listájához.
3. void endTest (teszt teszt) Ezt a módszert arra használják, hogy értesítsék a teszt elvégzéséről (befejezve)
4. int errorCount () Ezt a módszert használják a teszt végrehajtása során észlelt hiba megszerzésére.
5. Felsorolás hibák () Ez a módszer egyszerűen visszaadja a hibák gyűjteményét (itt soroljuk fel).
6. int FailCount () Ezt a módszert használják a teszt végrehajtása során észlelt hibák számának lekérdezésére.
7. void run (TestCase teszt) Ezt a módszert használják egy teszteset végrehajtására.
8. int runCount () Ez a módszer egyszerűen megszámolja a végrehajtott tesztet.
9. void startTest (teszt teszt) Ezt a módszert használják a teszt elindításának értesítésére.
10. érvénytelen stop () Ezt a módszert használják a leállítandó tesztfuttatásra.

JUnit Test Suite osztály

Ha több tesztet szeretne végrehajtani meghatározott sorrendben, akkor az úgy történhet, hogy az összes tesztet egy helyen egyesíti. Ezt a helyet nevezzük tesztcsomagoknak.

Az alábbi táblázatban láthatja az org.junit.TestSuite osztályban alkalmazott fontos módszereket :

S.No. Módszer Leírás
1. void addTest (teszt teszt) Ezt a módszert akkor alkalmazzák, ha tesztet akar hozzáadni a csomaghoz.
2. void addTestSuite (A testClass osztályt) Ezt a módszert akkor használják, ha meg szeretné adni az osztályt, miközben tesztet ad a csomaghoz.
3. int countTestCases () Ezt a módszert akkor alkalmazzák, ha meg akarja számolni a tesztesetek számát.
4. Karakterlánc getName () Ezzel a módszerrel kapják meg a tesztcsomag nevét.
5. void run (TestResult eredmény) Ezt a módszert használják egy teszt végrehajtására és a teszt eredményének összegyűjtésére a TestResult objektumban.
6. void setName (karakterlánc neve) Ezzel a módszerrel állítható be a TestSuite neve .
7. Teszt testAt (int index) Ezt a módszert akkor alkalmazzák, ha a tesztet adott indexben szeretné visszaadni.
8. int testCount () Ezt a módszert akkor alkalmazzák, ha számos tesztet szeretne visszaküldeni a Suite-ban.
9. statikus teszt figyelmeztetés (karakterlánc üzenet) Ez a módszer egy tesztet eredményez, amely sikertelen lesz, és figyelmeztető üzenetet naplóz.

Összegzés:

  • A JUnit egy hordozható API-t biztosít, amely minden fontos osztályt és kommentárt tartalmaz, amelyek hasznosak az egység teszt írásához.
  • Osztályok, amelyek nagyon hasznosak egy tesztesemény megírásakor
    • org.junit.Assert
    • org.junit.TestCase
    • org.junit.TestResult
    • org.junit.TestSuite
  • a fontos és gyakran használt kommentárok listája

    @Előtt

    @Óra előtt

    @Után

    @Óra után

    @Teszt

    @Figyelmen kívül hagyni