Junit Assert & Assert liknar med exempel
โก Smart sammanfattning
JUnit Assert och AssertEquals avgรถr om ett testfall รคr godkรคnt eller misslyckat genom att jรคmfรถra fรถrvรคntade och faktiska vรคrden. Den hรคr resursen fรถrklarar assert-metoderna som tillhandahรฅlls av org.junit.Assert, inklusive booleska, null-, identitets-, likhets- och array-assertioner, med ett komplett fungerande exempel.

Vad รคr Junit Assert?
Assert รคr en metod som รคr anvรคndbar fรถr att avgรถra om ett testfall รคr godkรคnt eller misslyckat. Assert-metoderna tillhandahรฅlls av klassen org.junit.Assert, som utรถkar klassen java.lang.Object.
Det finns olika typer av pรฅstรฅenden, som booleska, null, identiska, etc.
JUnit tillhandahรฅller en klass med namnet Assert, som tillhandahรฅller en mรคngd assertion-metoder som รคr anvรคndbara fรถr att skriva testfall och upptรคcka testfel.
Assertmetoderna tillhandahรฅlls av klassen org.junit.Assert, vilket fรถrlรคnger java.lang.Object klass.
JUnit hรคvda metoder
Boolean
Om du vill testa de booleska villkoren (sant eller falskt) kan du anvรคnda fรถljande assert-metoder:
- assertTrue(condition)
- hรคvdaFalse(villkor)
Hรคr รคr tillstรฅndet ett booleskt vรคrde.
Noll objekt
Om du vill kontrollera initialvรคrdet fรถr ett objekt/variabel har du fรถljande metoder:
- assertNull(objekt)
- assertNotNull(objekt)
Hรคr รคr objektet ett Java objekt, t.ex assertNull(faktisk);
Identisk
Om du vill kontrollera om objekten รคr identiska (dvs. jรคmfรถra tvรฅ referenser till samma Java objekt) eller olika:
- assertSame(fรถrvรคntat, faktiskt) โ Den returnerar sant om fรถrvรคntat == faktisk.
- hรคvdaNotSame(fรถrvรคntad, faktisk)
Pรฅstรฅ lika
Om du vill testa likheten mellan tvรฅ objekt har du fรถljande metod:
- assertEquals(expected, real)
Det kommer att รฅterkomma sant om fรถrvรคntat.lika med (faktiskt) returnerar sant.
Assert Array Equals
Om du vill testa arrayernas likhet har du fรถljande metod:
- assertArrayEquals(expected, actual)
Metoden ovan mรฅste anvรคndas om arrayer har samma lรคngd. Fรถr varje giltigt vรคrde fรถr i, kan du kontrollera det enligt nedan:
- assertEquals(fรถrvรคntat[i], faktiskt[i])
- assertArrayEquals(fรถrvรคntat[i], faktiskt[i])
Felmeddelande
Om du vill kasta nรฅgot pรฅstรฅendefel har du det misslyckas(), vilket alltid resulterar i ett underkรคnt beslut.
- misslyckas (meddelande);
Du kan ha en assertionmetod med ytterligare Strรคng parameter som den fรถrsta parametern. Denna strรคng lรคggs till i felmeddelandet om kontrollen misslyckas. Till exempel, misslyckas (meddelande) kan skrivas som:
- assertEquals(meddelande, fรถrvรคntat, faktiskt)
JUnit assertEquals
Du har hรคvdaLika med(a, b), som fรถrlitar sig pรฅ รคr lika med () metod fรถr klassen Object.
- Hรคr kommer det att utvรคrderas som a.lika med(b).
- Hรคr anvรคnds klassen som testas fรถr att faststรคlla ett lรคmpligt jรคmstรคlldhetsfรถrhรฅllande.
- Om en klass inte รฅsidosรคtter รคr lika med () metod fรถr รndamรฅlet klassen, kommer den att fรฅ standardbeteendet fรถr รคr lika med () metod, dvs. objektidentitet.
If a och b รคr primitiver som t.ex bitgrupp, int, boolean, etc., sรฅ kommer fรถljande att gรถras fรถr assertEquals(a, b):
a och b kommer att konverteras till motsvarande omslagsobjekttyp (Byte, heltal, booleskt tal, etc.), och sedan a.lika med(b) kommer att utvรคrderas.
Till exempel, anta att nedanstรฅende strรคngar har samma vรคrden; lรฅt oss testa det med assertEquals:
String obj1 = "Junit"; String obj2 = "Junit"; assertEquals(obj1, obj2);
Ovanstรฅende assert-sats returnerar sant eftersom obj1.equals(obj2) returnerar sant.
Flyttalspรฅstรฅenden
Nรคr du vill jรคmfรถra flyttaltyper (t.ex. dubbla or flyta), behรถver du en ytterligare obligatorisk parameter, delta-, fรถr att undvika problem med avrundningsfel vid flyttalsjรคmfรถrelser.
Pรฅstรฅendet utvรคrderas enligt nedan:
- Math.abs(fรถrvรคntat โ faktiskt) <= delta
Till exempel:
hรคvdaLika med(aDoubleVรคrde, ett annatDoubleVรคrde, 0.001)
JUnit Pรฅstรฅ exempel
Exemplet nedan visar hur man hรคvdar ett villkor med hjรคlp av JUnit hรคvda metoder.
Lรฅt oss skapa en enkel testklass med namnet Junit4AssertionTest.java och en testlรถparklass TestRunner.java.
Du kommer att skapa nรฅgra variabler och viktiga assert-satser i JUnit.
I det hรคr exemplet kommer du att kรถra vรฅr testklass med hjรคlp av TestRunner.java.
Steg 1) Lรฅt oss skapa en klass som tรคcker alla viktiga metoder fรถr assert-satsen i 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); } }
Steg 2) Du behรถver skapa en testrunner-klass fรถr att kรถra ovanstรฅende klass:
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()); } }
Steg 3) Lรฅt oss analysera den fรถrvรคntade utdata steg fรถr steg. Betrakta alla assert-satser en efter en:
- assertEquals(strรคng1, strรคng2);
Jรคmfรถr nu string1="Junit" med string2="Junit" med equals-metoden i Object-klassen. Ersรคtt assertEquals-metoden med java.lang.Object.equals()-metoden:
strรคng1.equals(strรคng2) => returnerar sant
Sรฅ assertEquals(strรคng1, strรคng2) kommer att returnera sann.
- assertSame(strรคng3, strรคng4);
Funktionen โassertSame()โ รคr till fรถr att kontrollera att de tvรฅ objekten refererar till samma objekt. Eftersom string3="test" och string4="test" รคr bรฅde string3 och string4 av samma typ, sรฅ assertSame(string3, string4) kommer att returnera sann.
- assertNotSame(strรคng1, strรคng3);
Funktionen โassertNotSame()โ รคr till fรถr att kontrollera att de tvรฅ objekten inte refererar till samma objekt. Eftersom string1=โJunitโ och string3=โtestโ รคr bรฅde string1 och string3 av olika typer, sรฅ assertNotSame(string1, string3) kommer att returnera sann.
- assertNotNull(strรคng1);
Funktionen โassertNotNull()โ รคr till fรถr att kontrollera att ett objekt inte รคr null. Eftersom string1=โJunitโ, vilket รคr ett vรคrde som inte รคr null, kommer assertNotNull(string1) att returnera sann.
- assertNull(strรคng5);
Funktionen "assertNull()" รคr till fรถr att kontrollera att ett objekt รคr null. Eftersom string5=null, vilket รคr ett nullvรคrde, kommer assertNull(string5) att returnera sann.
- pรฅstรฅSant(variabel1 < variabel2);
Funktionen โassertTrue()โ รคr till fรถr att kontrollera att ett villkor รคr sant. Eftersom variabel1=1 och variabel2=2, vilket visar att variabel1 < variabel2-villkoret รคr sant, kommer assertTrue(variabel1 < variabel2) att returnera sann.
- assertArrayEquals(airethematicArrary1, airethematicArrary2);
Funktionen "assertArrayEquals()" รคr till fรถr att kontrollera att den fรถrvรคntade arrayen och den resulterande arrayen รคr lika. Arraytypen kan vara int, long, short, char, byte eller java.lang.Object. Eftersom airethematicArrary1 = { 1, 2, 3 } och airethematicArrary2 = { 1, 2, 3 }, vilket visar att bรฅda arrayerna รคr lika, kommer assertArrayEquals(airethematicArrary1, airethematicArrary2) att returnera sann.
Eftersom alla sju hรคvdar uttalanden om Junit4AssertionTest.java class return true, nรคr du kรถr assert-klassen test returnerar den ett lyckat test (se utdata nedan).
Steg 4) Hรถgerklicka pรฅ Junit4AssertionTest.java och klicka pรฅ Kรถr som -> JUnit. Du kommer att se utdata enligt nedan:
Ovanstรฅende resultat visar ett fรถrvรคntat lyckat testresultat.

