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.

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:
- assertTrue (podmínka)
- 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:
- askNull(objekt)
- 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ý:
- assertStejné(očekávané, skutečné) — Vrátí hodnotu true, pokud očekávaný == skutečný.
- 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:
- 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ý.
- 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ý.
- 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ý.
- 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ý.
- 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ý.
- 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ý.
- 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:
Výše uvedený výstup ukazuje úspěšný výsledek testu dle očekávání.

