Junit Assert & AssertEquals példával

⚡ Okos összefoglaló

JUnit Az Assert és az AssertEquals metódusok egy teszteset sikeres vagy sikertelen állapotát határozzák meg a várható és a tényleges értékek összehasonlításával. Ez az anyag egy teljes működő példával ismerteti az org.junit.Assert által biztosított assert metódusokat, beleértve a boolean, null, identity, equality és tömb assertációkat.

  • Cél: Az org.junit.Assert metódusai ellenőrzik a feltételeket és észlelik a teszthibákat.
  • 🔢 Módszer típusok: A logikai, null, identikus, egyenlő, tömb-egyenlő és hibaüzenet típusú állítások a gyakori ellenőrzéseket fedik le.
  • 🟰 assertEquals: Értékeket hasonlít össze az equals() metódussal, tördelésselping primitíveket először objektumokká alakít.
  • 🔬 Lebegőpont: A delta tolerancia szükséges float vagy double értékek összehasonlításakor.
  • 🧪 Példa: Egy tesztosztály és egy tesztfuttató bemutatja, hogy minden kulcsfontosságú assert utasítás igaz értéket ad vissza.

JUnit Assert és AssertEquals

Mi az a Junit Assert?

Az Assert egy hasznos metódus egy teszteset sikeres vagy sikertelen állapotának meghatározására. Az assert metódusokat az org.junit.Assert osztály biztosítja, amely kiterjeszti a java.lang.Object osztályt.

Különböző típusú állítások léteznek, például logikai, null, identikus stb.

JUnit egy Assert nevű osztályt biztosít, amely számos assertációs metódust kínál, amelyek hasznosak tesztesetek írásában és teszthibák észlelésében.

Az assert metódusokat az osztály biztosítja org.junit.Assert, amely kiterjeszti a java.lang.Object osztály.

JUnit Asszert módszerek

logikai

Ha a logikai feltételeket (igaz vagy hamis) szeretnéd tesztelni, a következő assert metódusokat használhatod:

  1. igazat állít (feltétel)
  2. 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:

  1. assertNull(objektum)
  2. assertNotNull(objektum)

Itt az objektum egy Java tárgy, például assertNull(tényleges);

Azonos

Ha ellenőrizni szeretnéd, hogy az objektumok azonosak-e (azaz két ugyanarra a tárgyra mutató hivatkozást hasonlítasz össze), Java tárgy) vagy különböző:

  1. assertSame(várható, tényleges) — Igaz értéket ad vissza, ha várható == tényleges.
  2. assertNotSame(várt, tényleges)

Assert Equals

Ha két objektum egyenlőségét szeretnéd tesztelni, a következő módszerrel tudod tesztelni:

  • assertEquals (várt, tényleges)

Igaz lesz, ha várható.egyenlő(tényleges) igazat ad vissza.

Assert Array egyenlő

Ha tömbök egyenlőségét szeretnéd tesztelni, a következő módszerrel rendelkezel:

  • assertArrayEquals(várt, tényleges)

A fenti módszert akkor kell használni, ha a tömbök azonos hosszúságúak. Minden érvényes értékre a következő esetén: i, az alábbiak szerint ellenőrizheti:

  • assertEquals(elvárt[i], tényleges[i])
  • assertArrayEquals(várható[i], tényleges[i])

Sikertelen üzenet

Ha bármilyen állítási hibát ki akarsz dobni, megtetted sikertelen(), ami mindig elutasított ítéletet eredményez.

  • hiba(üzenet);

Lehet egy állítási metódusod egy továbbival Húr paraméter első paraméterként. Ez a karakterlánc hozzáfűződik a hibaüzenethez, ha az állítás sikertelen. Például: hiba (üzenet) így írható:

  • assertEquals(üzenet, várható, tényleges)

JUnit asserEquals

Van assertEquals(a, b), amely a egyenlő () az Object osztály metódusa.

  • Itt a következőképpen lesz értékelve a.egyenlő(b)-vel.
  • 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ő () módszer a tárgy osztály, akkor az alapértelmezett viselkedést fogja kapni egyenlő () metódus, azaz objektumazonosság.

If a és a b olyan primitívek, mint pl byte, int, logikai, stb., akkor az assertEquals(a, b) esetében a következőket kell tenni:

a és a b konvertálásra kerül a megfelelő wrapper objektumtípusra (Bájt, Egész szám, Logikai értékstb.), majd a.egyenlő(b)-vel értékelni fogják.

Például vegyük az alább említett, azonos értékekkel rendelkező karakterláncokat; teszteljük az assertEquals használatával:

String obj1 = "Junit";
String obj2 = "Junit";
assertEquals(obj1, obj2);

A fenti assert utasítás igaz értéket ad vissza, mivel az obj1.equals(obj2) is igaz értéket ad vissza.

Lebegőpontos állítások

Amikor lebegőpontos típusokat szeretnénk összehasonlítani (pl. kétszeresére or úszik), szükséged van egy további kötelező paraméterre, delta, hogy elkerüljük a kerekítési hibákat lebegőpontos összehasonlítások elvégzése közben.

Az állítás az alábbiak szerint értékelődik:

  • Math.abs(elvárt – 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 állíthatunk fel egy feltételt a következő 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 assert utasítást fogsz létrehozni a JUnit.

Ebben a példában a TestRunner.java használatával fogjuk végrehajtani a tesztosztályunkat.

Step 1) Hozzunk létre egy osztályt, amely lefedi az összes fontos assert utasítási metódust. JUnit:

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 hoznod egy tesztfuttató 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) Elemezzük a várható kimenetet lépésről lépésre. Vizsgáljuk meg az összes assert utasítást egyenként:

  1. assertEquals(karakterlánc1, karakterlánc2);

Most hasonlítsd össze a string1=”Junit” és a string2=”Junit” értékeket az Object osztály equals metódusával. Cseréld le az assertEquals metódust a java.lang.Object.equals() metódusra:

string1.equals(string2) => igaz értéket ad vissza

Tehát az assertEquals(string1, string2) visszaadja a következőt: igaz.

  1. assertSame(karakterlánc3, karakterlánc4);

Az „assertSame()” függvény célja annak ellenőrzése, hogy a két objektum ugyanarra az objektumra hivatkozik-e. Mivel a string3=”test” és a string4=”test”, mind a string3, mind a string4 azonos típusú, így az assertSame(string3, string4) a következőt adja vissza: igaz.

  1. assertNotSame(karakterlánc1, karakterlánc3);

Az „assertNotSame()” függvény célja annak ellenőrzése, hogy a két objektum nem ugyanarra az objektumra hivatkozik-e. Mivel a string1=”Junit” és a string3=”test”, mind a string1, mind a string3 különböző típusú, így az assertNotSame(string1, string3) a következő értéket adja vissza: igaz.

  1. assertNotNull(karakterlánc1);

Az „assertNotNull()” függvény annak ellenőrzésére szolgál, hogy egy objektum nem null értékű-e. Mivel a string1="Junit" egy nem null érték, az assertNotNull(string1) a következőt adja vissza: igaz.

  1. assertNull(karakterlánc5);

Az „assertNull()” függvény célja annak ellenőrzése, hogy egy objektum null-e. Mivel a string5=null, ami egy null érték, az assertNull(string5) értéket ad vissza. igaz.

  1. assertTrue(változó1 < változó2);

Az „assertTrue()” függvény célja, hogy ellenőrizze egy feltétel teljesülését. Mivel a változó1=1 és a változó2=2, ami azt mutatja, hogy a változó1 < változó2 feltétel igaz, az assertTrue(változó1 < változó2) a következőt adja vissza: igaz.

  1. assertArrayEquals(levethematikus tömb1, légtematikus tömb2);

Az „assertArrayEquals()” függvény célja annak ellenőrzése, 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ő, az assertArrayEquals(airethematicArrary1, airethematicArrary2) a következő értéket adja vissza: igaz.

Mivel mind a hét állítja a következő állításokat: Junit4AssertionTest.java A class return true függvényben a test assert osztály végrehajtásakor az egy sikeres tesztet ad vissza (lásd az alábbi kimenetet).

Step 4) Kattintson jobb gombbal a Junit4AssertionTest.java fájlra, majd válassza a Futtatás másként -> parancsot. JUnit. Látni fogja a kimenetet az alábbiak szerint:

JUnit Példa állítása

A fenti kimenet a vártnak megfelelően sikeres teszteredményt mutat.

GYIK

Igen. Az MI-asszisztensek képesek assertEquals, assertTrue és egyéb állításokat előállítani egy metódus várható viselkedéséből. Továbbra is érdemes áttekinteni a várható értékeket és a szélső eseteket, hogy megbizonyosodjunk a tesztek értelmességéről.

Igen. A mesterséges intelligencia az összehasonlítás tárgya alapján javasolhat assertEquals-t az assertSame vagy az assertArrayEquals helyett. Ez csökkenti a gyakori hibákat, például a hivatkozások ellenőrzését, amikor az értékek összehasonlításának szándékát tükrözi.

Az assertEquals az equals() metódussal ellenőrzi az értékek egyenlőségét. Az assertSame ellenőrzi, hogy két hivatkozás pontosan ugyanarra az objektumra mutat-e a memóriában. Két egyenlő értékű objektum esetén az assertSame hibát jelezhet.

Amikor egy állítás kudarcot vall, JUnit Egy AssertionError hibát dob, sikertelenként jelöli a tesztet, és jelenti az opcionális üzenetet a várt és a tényleges értékekkel együtt, hogy segítsen a teszt hibakeresésében.

Foglald össze ezt a bejegyzést a következőképpen: