Junit Assert & AssertEquals s příkladem

⚡ Chytré shrnutí

JUnit Metody Assert a AssertEquals určují stav testovacího případu, zda je úspěšný nebo neúspěšný, porovnáním očekávaných a skutečných hodnot. Tento zdroj vysvětluje metody assert poskytované souborem org.junit.Assert, včetně booleovských, null, identity, equality a array assertů, s kompletním funkčním příkladem.

  • (Tj. Účel: Metody Assert z org.junit.Assert ověřují podmínky a detekují selhání testů.
  • 🔢 Typy metod: Booleovské, null, identické, rovná se, pole-rovná se a tvrzení o selhání pokrývají běžné kontroly.
  • 🟰 assertEquals: Porovnává hodnoty pomocí metody equals(), zabalujeping primitiva nejprve do objektů.
  • 🔬 Plovoucí bod: Při porovnávání hodnot typu float nebo double je vyžadována delta tolerance.
  • 🧪 Příklad: Testovací třída a běžec demonstrují, že každý klíčový příkaz assert vrací hodnotu true.

JUnit Assert a AssertEquals

Co je Junit Assert?

Assert je metoda užitečná pro určení stavu testovacího případu Pass nebo Fail. Metody assert jsou poskytovány třídou org.junit.Assert, která rozšiřuje třídu java.lang.Object.

Existují různé typy tvrzení, jako například booleovská, nulová, identická atd.

JUnit poskytuje třídu s názvem Assert, která nabízí řadu metod assertů užitečných při psaní testovacích případů a detekci selhání testů.

Metody tvrzení poskytuje třída org.junit.Tvrdit, který rozšiřuje java.lang.Object třída.

JUnit Metody tvrzení

Boolean

Pokud chcete otestovat booleovské podmínky (true nebo false), můžete použít následující metody assert:

  1. assertTrue (podmínka)
  2. assertFalse (podmínka)

Zde je podmínkou booleovská hodnota.

Objekt nula

Pokud chcete zkontrolovat počáteční hodnotu objektu/proměnné, máte následující metody:

  1. askNull(objekt)
  2. askNotNull(objekt)

Zde je objekt Java objekt, např askNull(skutecne);

Identický

Pokud chcete zkontrolovat, zda jsou objekty identické (tj. porovnat dva odkazy na stejný Java objekt) nebo jiný:

  1. assertStejné(očekávané, skutečné) — Vrátí hodnotu true, pokud očekávaný == skutečný.
  2. claimNotSame (očekávaný, skutečný)

Tvrdit se rovná

Pokud chcete otestovat rovnost dvou objektů, máte následující metodu:

  • claimEquals(očekávaný, skutečný)

Vrátí se true if očekáváno.rovná se(skutečné) vrátí true.

Assert Array Equals

Pokud chcete otestovat rovnost polí, máte následující metodu:

  • claimArrayEquals(očekávané, skutečné)

Výše uvedená metoda musí být použita, pokud mají pole stejnou délku. Pro každou platnou hodnotu for i, můžete to zkontrolovat, jak je uvedeno níže:

  • assertEquals(očekávané[i], skutečné[i])
  • assertArrayEquals(očekávané[i], skutečné[i])

Zpráva o selhání

Pokud chcete vyvolat jakoukoli chybu tvrzení, máte selhat(), což vždy vede k neúspěchu.

  • selhání(zpráva);

Můžete mít metodu assertace s dalším Řetězec parametr jako první parametr. Tento řetězec bude připojen k chybové zprávě, pokud selže tvrzení. Například selhání (zpráva) lze napsat jako:

  • assertEquals(zpráva, očekávané, skutečné)

JUnit tvrdit Rovná se

Ty máš assertEquals(a, b), který se opírá o rovná se () metoda třídy Object.

  • Zde to bude hodnoceno jako a.rovná se(b).
  • Zde se testovaná třída používá k určení vhodného vztahu rovnosti.
  • Pokud třída nepřepíše rovná se () metoda Objekt třídy, získá výchozí chování rovná se () metoda, tj. identita objektu.

If a a b jsou primitivy jako např byte, int, boolean, atd., pak se pro assertEquals(a, b) provede následující:

a a b budou převedeny na ekvivalentní typ objektu wrapper (Bajt, celé číslo, booleovská hodnota, atd.) a poté a.rovná se(b) bude vyhodnocena.

Například uvažujme níže uvedené řetězce, které mají stejné hodnoty; otestujme to pomocí assertEquals:

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

Výše uvedený příkaz assert vrátí hodnotu true, protože obj1.equals(obj2) vrátí hodnotu true.

Tvrzení s pohyblivou řádovou čárkou

Pokud chcete porovnat typy s plovoucí desetinnou čárkou (např. zdvojnásobit or vznášet se), potřebujete další povinný parametr, delta, aby se předešlo problémům se zaokrouhlovacími chybami při porovnávání čísel s plovoucí desetinnou čárkou.

Tvrzení se hodnotí následovně:

  • Math.abs(očekávaná – skutečná) <= delta

Například:

assertEquals(aDoubleHodnota, dalšíDoubleHodnota, 0.001)

JUnit Příklad tvrzení

Níže uvedený příklad ukazuje, jak lze pomocí JUnit prosazovat metody.

Vytvořme si jednoduchou testovací třídu s názvem Junit4AssertionTest.java a třída testovacích běžců TestRunner.java.

Vytvoříte několik proměnných a důležitých assert příkazů v JUnit.

V tomto příkladu spustíte naši testovací třídu pomocí TestRunner.java.

Krok 1) Vytvořme třídu pokrývající všechny důležité metody příkazů assert v 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);
    }
}

Krok 2) Pro spuštění výše uvedené třídy je potřeba vytvořit třídu test runner:

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());
    }
}

Krok 3) Analyzujme očekávaný výstup krok za krokem. Uvažujme všechny assert příkazy jeden po druhém:

  1. assertEquals(řetězec1, řetězec2);

Nyní porovnejte string1=”Junit” s string2=”Junit” s metodou equals třídy Object. Nahraďte metodu assertEquals metodou java.lang.Object.equals():

string1.equals(string2) => vrací true

Takže assertEquals(řetězec1, řetězec2) vrátí pravdivý.

  1. asseSame(řetězec3, řetězec4);

Funkce „assertSame()“ slouží ke kontrole, zda oba objekty odkazují na stejný objekt. Protože string3=“test“ a string4=“test“, jsou string3 i string4 stejného typu, takže assertSame(string3, string4) vrátí hodnotu pravdivý.

  1. ssesNotSame(řetězec1, řetězec3);

Funkce „assertNotSame()“ slouží ke kontrole, zda se oba objekty neodkazují na stejný objekt. Protože string1=„Junit“ a string3=„test“, jsou string1 i string3 různých typů, takže assertNotSame(string1, string3) vrátí hodnotu pravdivý.

  1. askNotNull(řetězec1);

Funkce „assertNotNull()“ slouží ke kontrole, zda objekt není null. Protože string1=„Junit“, což je nenulová hodnota, assertNotNull(string1) vrátí pravdivý.

  1. asseNull(řetězec5);

Funkce „assertNull()“ slouží ke kontrole, zda je objekt null. Protože string5=null, což je null hodnota, assertNull(string5) vrátí pravdivý.

  1. assertTrue(proměnná1 < proměnná2);

Funkce „assertTrue()“ slouží k ověření, zda je podmínka pravdivá. Protože proměnná1=1 a proměnná2=2, což ukazuje, že podmínka proměnná1 < proměnná2 je pravdivá, vrátí assertTrue(proměnná1 < proměnná2) pravdivý.

  1. asseArrayEquals(airethematicArrary1, airethematicArrary2);

Funkce „assertArrayEquals()“ slouží ke kontrole, zda jsou očekávané pole a výsledné pole shodné. Typ pole může být int, long, short, char, byte nebo java.lang.Object. Protože airethematicArrary1 = { 1, 2, 3 } a airethematicArrary2 = { 1, 2, 3 }, což ukazuje, že obě pole jsou si shodná, assertArrayEquals(airethematicArrary1, airethematicArrary2) vrátí hodnotu pravdivý.

Protože všech sedm tvrdí tvrzení Junit4AssertionTest.java třída vrátí hodnotu true, když spustíte třídu test assert, vrátí úspěšný test (viz výstup níže).

Krok 4) Klikněte pravým tlačítkem myši na Junit4AssertionTest.java a klikněte na Spustit jako -> JUnit. Uvidíte výstup, jak je uvedeno níže:

JUnit Příklad tvrzení

Výše uvedený výstup ukazuje úspěšný výsledek testu dle očekávání.

Nejčastější dotazy

Ano. Asistenti umělé inteligence mohou z očekávaného chování metody generovat assertEquals, assertTrue a další tvrzení. Přesto byste měli zkontrolovat očekávané hodnoty a okrajové případy, abyste se ujistili, že testy mají smysl.

Ano. Umělá inteligence může na základě porovnávaných hodnot navrhnout assertEquals versus assertSame nebo assertArrayEquals. Tím se sníží počet běžných chyb, jako je například kontrola referencí, když jste chtěli porovnat hodnoty.

assertEquals kontroluje rovnost hodnot pomocí metody equals(). assertSame kontroluje, zda dva odkazy ukazují na přesně stejný objekt v paměti. Dva objekty se stejnou hodnotou mohou selhat při použití metody assertSame.

Když tvrzení selže, JUnit Vyvolá chybu AssertionError, označí test jako neúspěšný a nahlásí volitelnou zprávu spolu s očekávanými a skutečnými hodnotami, které vám pomohou s laděním testu.

Shrňte tento příspěvek takto: