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.

  • โœ… Syfte: Assert-metoder frรฅn org.junit.Assert verifierar villkor och upptรคcker testfel.
  • ๐Ÿ”ข Metodtyper: Boolean, null, identisk, lika med, array-lika med och fail-message-assertions tรคcker vanliga kontroller.
  • ๐ŸŸฐ hรคvdaLika med: Jรคmfรถr vรคrden med hjรคlp av equals()-metoden, wrapping primitiva till objekt fรถrst.
  • ๐Ÿ”ฌ Flytpunkt: En deltatolerans krรคvs vid jรคmfรถrelse av flyttal- eller dubbla vรคrden.
  • ๐Ÿงช Exempel: En testklass och runner demonstrerar varje viktig assert-sats som returnerar sant.

JUnit Hรคvda och Hรคvda lika med

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:

  1. assertTrue(condition)
  2. 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:

  1. assertNull(objekt)
  2. 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:

  1. assertSame(fรถrvรคntat, faktiskt) โ€” Den returnerar sant om fรถrvรคntat == faktisk.
  2. 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:

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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:

JUnit Pรฅstรฅ exempel

Ovanstรฅende resultat visar ett fรถrvรคntat lyckat testresultat.

Vanliga frรฅgor

Ja. AI-assistenter kan producera assertEquals, assertTrue och andra pรฅstรฅenden frรฅn en metods fรถrvรคntade beteende. Du bรถr fortfarande granska de fรถrvรคntade vรคrdena och kantfallen fรถr att sรคkerstรคlla att testerna รคr meningsfulla.

Ja. AI kan fรถreslรฅ assertEquals kontra assertSame eller assertArrayEquals baserat pรฅ vad du jรคmfรถr. Detta minskar vanliga misstag, som att kontrollera referenser nรคr du tรคnkte jรคmfรถra vรคrden.

assertEquals kontrollerar vรคrdelikhet med hjรคlp av equals()-metoden. assertSame kontrollerar att tvรฅ referenser pekar pรฅ exakt samma objekt i minnet. Tvรฅ objekt med samma vรคrde kan misslyckas med assertSame.

Nรคr ett pรฅstรฅende misslyckas, JUnit utlรถser ett AssertionError, markerar testet som misslyckat och rapporterar det valfria meddelandet tillsammans med de fรถrvรคntade och faktiska vรคrdena fรถr att hjรคlpa dig felsรถka testet.

Sammanfatta detta inlรคgg med: