Junit Assert & AssertEquals példával
Mi az a Junit Assert?
Az Assert egy olyan módszer, amely hasznos egy teszteset Pass vagy Fail állapotának meghatározásában. Az assert metódusokat az org.junit.Assert osztály biztosítja, amely kiterjeszti a java.lang.Object osztályt.
Különféle állítások léteznek, például logikai, nulla, azonos stb.
A Junit egy Assert nevű osztályt biztosít, amely egy csomó állítási módszert biztosít, amelyek hasznosak tesztesetek írásához és a teszt sikertelenségének észleléséhez
Az assert metódusokat az osztály biztosítja org.junit.Assert amely kiterjed java.lang.Object osztály.
JUnit Asszert módszerek
logikai
Ha szeretné tesztelni a logikai feltételeket (igaz vagy hamis), a következő állítási módszereket használhatja
- igazat állít (feltétel)
- assertFalse (feltétel)
Itt a feltétel egy logikai érték.
Null objektum
Ha egy objektum/változó kezdeti értékét szeretné ellenőrizni, a következő módszerek állnak rendelkezésére:
- assertNull(objektum)
- assertNotNull(objektum)
Itt a tárgy Java tárgy például assertNull(tényleges);
Azonos
Ha ellenőrizni szeretné, hogy az objektumok azonosak-e (vagyis két hivatkozást hasonlítanak össze ugyanarra a Java objektumra), vagy különböznek.
- assertSame(várt, tényleges), Igaz lesz, ha várható == tényleges
- assertNotSame(várt, tényleges)
Assert Equals
Ha két objektum egyenlőségét szeretné tesztelni, a következő módszerek állnak rendelkezésére
- assertEquals (várt, tényleges)
Igaz lesz, ha: várt.egyenlő(tényleges) igazat ad vissza.
Assert Array egyenlő
Ha a tömbök egyenlőségét szeretné tesztelni, a következő módszereket használhatja az alábbiak szerint:
- assertArrayEquals(várt, tényleges)
A fenti módszert kell használni, ha a tömbök minden érvényes értékéhez azonos hosszúságúak i, az alábbiak szerint ellenőrizheti:
- assertEquals(várt[i],tényleges[i])
- assertArrayEquals(várt[i],tényleges[i])
Sikertelen üzenet
Ha bármilyen állítási hibát ki akarsz dobni, megtetted sikertelen() ami mindig sikertelen ítéletet eredményez.
- Sikertelen(üzenet);
Kiegészítővel rendelkezhet érvényesítési módszerrel Húr paramétert az első paraméterként. Ez a karakterlánc hozzá lesz fűzve a hibaüzenethez, ha az állítás sikertelen. Például sikertelen (üzenet) lehet írni
- assertEquals(üzenet, várt, tényleges)
JUnit asserEquals
Van assertEquals(a,b) amely arra támaszkodik egyenlő () az Object osztály metódusa.
- Itt a következőképpen lesz értékelve a.egyenlő(b ).
- Itt a vizsgált osztályt használjuk a megfelelő egyenlőségi reláció meghatározására.
- Ha egy osztály nem írja felül a egyenlő () a metódusa tárgy osztályban, akkor az alapértelmezett viselkedést kapja egyenlő () metódus, azaz objektum azonosság.
If a és a b olyan primitívek, mint pl byte, int, logikai, stb., akkor a következő történik az assertEquals(a,b) esetén:
a és a b konvertálásra kerül a megfelelő wrapper objektumtípusra (Byte, Integer, logikaistb.), majd a.egyenlő(b) értékelni fogják.
Például: Tekintsük az alább említett, azonos értékű karakterláncokat, teszteljük az assertTrue használatával
String obj1="Junit"; String obj2="Junit"; assertEquals(obj1,obj2);
A fenti assert utasítás igazat ad vissza, mivel az obj1.equals(obj2) igazat ad vissza.
Lebegőpontos állítások
Ha lebegőpontos típusokat szeretne összehasonlítani (pl kétszeresére or úszik), szüksége van egy további kötelező paraméterre delta hogy elkerüljük a kerekítési hibákkal kapcsolatos problémákat a lebegőpontos összehasonlítás során.
Az állítás az alábbiak szerint értékelődik:
- Math.abs( várható – tényleges ) <= delta
Például:
assertEquals(aDoubleÉrték, másikDoubleÉrték, 0.001)
JUnit Példa állítása
Az alábbi példa bemutatja, hogyan kell feltételt érvényesíteni a használatával JUnit érvényesítési módszerek.
Hozzunk létre egy egyszerű tesztosztályt, melynek neve Junit4AssertionTest.java és egy tesztfutó osztály TestRunner.java.
Néhány változót és fontos állítást fog létrehozni JUnit.
Ebben a példában a tesztosztályunkat a TestRunner.java használatával hajtja végre
Step 1) Hozzon létre egy osztályt, amely lefedi az összes fontos assert utasítás metódust a junitban:
Junit4AssertionTest.java
package guru99.junit; import static org.junit.Assert.*; import org.junit.Test; public class Junit4AssertionTest { @Test public void testAssert(){ //Variable declaration String string1="Junit"; String string2="Junit"; String string3="test"; String string4="test"; String string5=null; int variable1=1; int variable2=2; int[] airethematicArrary1 = { 1, 2, 3 }; int[] airethematicArrary2 = { 1, 2, 3 }; //Assert statements assertEquals(string1,string2); assertSame(string3, string4); assertNotSame(string1, string3); assertNotNull(string1); assertNull(string5); assertTrue(variable1<variable2); assertArrayEquals(airethematicArrary1, airethematicArrary2); } }
Step 2) Létre kell hoznia egy tesztfutó osztályt a fenti osztály végrehajtásához:
TestRunner.java
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(Junit4AssertionTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Step 3) Lépésről lépésre elemezzük a várható kimenetet:
Tekintsük egyenként az összes állítást:
- assertEquals(karakterlánc1,karakterlánc2);
Most hasonlítsa össze a string1=” Junit” és a string2=” Junit” objektumosztály egyenlő metódusával. Az assertEquals metódus lecserélése a java.lang.Object.equals() metódusból:
string1.equals(karakterlánc2)=> igazat ad vissza
Tehát az assertEquals(karakterlánc1,karakterlánc2) visszatér igaz.
- assertSame(karakterlánc3, karakterlánc4);
Az „assertSame()” funkció annak ellenőrzésére szolgál, hogy a két objektum ugyanarra az objektumra hivatkozzon.
Mivel a string3=”teszt” és a string4=”teszt” azt jelenti, hogy mind a string3, mind a karakterlánc4 azonos típusú, így az assertSame(karakterlánc3, karakterlánc4) ad vissza igaz.
- assertNotSame(karakterlánc1, karakterlánc3);
Az „assertNotSame()” funkció annak ellenőrzésére szolgál, hogy a két objektum nem ugyanarra az objektumra hivatkozik.
Mivel a string1=”Junit” és a string3=”teszt” azt jelenti, hogy mind a string1, mind a string3 különböző típusú, ezért az assertNotSame(karakterlánc1, karakterlánc3) ad vissza igaz.
- assertNotNull(karakterlánc1);
Az „assertNotNull()” funkció annak ellenőrzésére szolgál, hogy egy objektum nem nulla.
Mivel string1= „Junit”, ami nem null érték, így az assertNotNull(karakterlánc1) visszaad igaz.
- assertNull(karakterlánc5);
Az „assertNull()” funkció annak ellenőrzésére szolgál, hogy egy objektum nulla-e.
Mivel a string5= null, ami egy null érték, így az assertNull(string5) visszatér igaz.
- assertTrue(változó1
Az „assertTrue()” funkció annak ellenőrzésére szolgál, hogy egy feltétel igaz-e.
Mivel változó1=1 és változó2=2, ami azt mutatja, hogy a változó1 igaz.
- assertArrayEquals(levethematikus tömb1, légtematikus tömb2);
Az „assertArrayEquals()” funkció annak ellenőrzésére szolgál, hogy a várt tömb és az eredményül kapott tömb egyenlő-e. A tömb típusa lehet int, long, short, char, byte vagy java.lang.Object.
Mivel airethematicArrary1 = { 1, 2, 3 } és airethematicArrary2 = { 1, 2, 3 }, ami azt mutatja, hogy mindkét tömb egyenlő, ezért az assertArrayEquals(airethematicArrary1, airethematicArrary2) ad vissza igaz
Mivel mind a hét állítást Junit4AssertionTest.java osztály értéke igaz, ezért amikor végrehajtja a teszt assert osztályt, sikeres tesztet ad vissza. (lásd a kimenetet lent)
Step 4) Kattintson jobb gombbal a Junit4AssertionTest.java fájlra, majd kattintson a runAs-> elemreJUnit. Látni fogja a kimenetet az alábbiak szerint:
A fenti kimenet a vártnak megfelelően sikeres teszteredményt mutat.
Összegzésként
Ebben az oktatóanyagban megtanulta az általa biztosított állítási módszerek összes fontos típusát JUnit. Láttad az állításokra vonatkozó példákat is. Ez azt mutatja, hogy ha minden assert utasítás igazat ad vissza, akkor a teszt grafikus felhasználói felület igaz eredményt ad vissza, és ha az egyetlen teszt sikertelen, akkor sikertelen eredményt ad vissza.