Junit Assert & Assert er lig med eksempel

⚡ Smart opsummering

JUnit Assert og AssertEquals bestemmer status for bestået eller ikke bestået for en testcase ved at sammenligne forventede og faktiske værdier. Denne ressource forklarer assert-metoderne leveret af org.junit.Assert, herunder booleske, null-, identitets-, ligheds- og array-påstande, med et komplet fungerende eksempel.

  • Formål: Assert-metoder fra org.junit.Assert verificerer betingelser og detekterer testfejl.
  • 🔢 Metodetyper: Booleske, null-, identiske, lig med, array-lig med og fail-message-påstande dækker almindelige kontroller.
  • 🟰 hævderLig med: Sammenligner værdier ved hjælp af equals()-metoden, wrapping primitiver til objekter først.
  • 🔬 Flydende punkt: En delta-tolerance er påkrævet ved sammenligning af float- eller double-værdier.
  • 🧪 Eksempel: En testklasse og runner demonstrerer alle nøgle-asset-sætninger, der returnerer true.

JUnit Assert og AssertEquals

Hvad er Junit Assert?

Assert er en metode, der er nyttig til at bestemme status for bestået eller ikke bestået i en testcase. Assert-metoderne leveres af klassen org.junit.Assert, som udvider java.lang.Object-klassen.

Der findes forskellige typer af påstande, såsom booleske, nul-, identiske osv.

JUnit stiller en klasse med navnet Assert til rådighed, som leverer en række assertion-metoder, der er nyttige til at skrive testcases og detektere testfejl.

Assert-metoderne leveres af klassen org.junit.Assert, som forlænger java.lang.Object klasse.

JUnit hævde metoder

Boolesk

Hvis du vil teste de boolske betingelser (sand eller falsk), kan du bruge følgende assert-metoder:

  1. assertTrue (tilstand)
  2. assertFalse (tilstand)

Her er betingelsen en boolsk værdi.

Nul objekt

Hvis du vil kontrollere startværdien af ​​et objekt/en variabel, har du følgende metoder:

  1. assertNull(objekt)
  2. assertNotNull(objekt)

Her er objektet et Java objekt, f.eks assertNull(faktisk);

Identisk

Hvis du vil kontrollere, om objekterne er identiske (dvs. sammenligne to referencer til den samme Java objekt) eller forskelligt:

  1. assertSame(forventet, faktisk) — Den returnerer sand, hvis forventet == faktisk.
  2. assertNotSame (forventet, faktisk)

Hævde Lige

Hvis du vil teste ligheden mellem to objekter, har du følgende metode:

  • assertEquals (forventet, faktisk)

Det vil vende tilbage sandt, hvis forventet.lig med (faktisk) returnerer sandt.

Assert Array er lig med

Hvis du vil teste ligheden af ​​arrays, har du følgende metode:

  • assertArrayEquals (forventet, faktisk)

Ovenstående metode skal bruges, hvis arrays har samme længde. For hver gyldig værdi for i, kan du kontrollere det som angivet nedenfor:

  • assertEquals(forventet[i], faktisk[i])
  • assertArrayEquals(forventet[i], faktisk[i])

Fejlmeddelelse

Hvis du vil smide en påstandsfejl, har du det svigte(), hvilket altid resulterer i en fiasko.

  • mislykkes(besked);

Du kan have en assertion-metode med en ekstra String parameter som den første parameter. Denne streng vil blive tilføjet til fejlmeddelelsen, hvis påstanden mislykkes. For eksempel, fejl (besked) kan skrives som:

  • assertEquals(besked, forventet, faktisk)

JUnit assertEquals

Du har hævderLigMed(a, b), som er afhængig af lige med() metoden i klassen Object.

  • Her vil det blive vurderet som a.lig med(b).
  • Her bruges klassen under test til at bestemme en passende lighedsrelation.
  • Hvis en klasse ikke tilsidesætter lige med() metode af Object klasse, vil den få standardadfærden for lige med() metode, dvs. objektidentitet.

If a og b er primitiver som f.eks byte, int, booleanosv., så vil følgende blive gjort for assertEquals(a, b):

a og b vil blive konverteret til deres tilsvarende indpakningsobjekttype (Byte, heltal, boolskosv.), og derefter a.lig med(b) vil blive evalueret.

For eksempel, overvej at de nedenfor nævnte strenge har de samme værdier; lad os teste det ved hjælp af assertEquals:

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

Ovenstående assert-sætning returnerer sand, da obj1.equals(obj2) returnerer sand.

Påstande om flydende komma

Når du vil sammenligne flydende komma-typer (f.eks. fordoble or flyde), skal du bruge en yderligere påkrævet parameter, Delta, for at undgå problemer med afrundingsfejl under flydende komma-sammenligninger.

Påstanden vurderes som angivet nedenfor:

  • Matematik.abs(forventet – faktisk) <= delta

For eksempel:

hævderLig med(aDoubleVærdi, en andenDoubleVærdi, 0.001)

JUnit Påstå eksempel

Nedenstående eksempel viser, hvordan man hævder en betingelse ved hjælp af JUnit hævde metoder.

Lad os oprette en simpel testklasse med navnet Junit4AssertionTest.java og en testløberklasse TestRunner.java.

Du skal oprette et par variabler og vigtige assert-sætninger i JUnit.

I dette eksempel skal du udføre vores testklasse ved hjælp af TestRunner.java.

Trin 1) Lad os oprette en klasse, der dækker alle vigtige assert-sætningsmetoder 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);
    }
}

Trin 2) Du skal oprette en testrunner-klasse for at udføre ovenstående klasse:

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

Trin 3) Lad os analysere det forventede output trin for trin. Betragt alle assert-udsagn én efter én:

  1. hævderLigeVel(streng1, streng2);

Sammenlign nu string1="Junit" med string2="Junit" med equals-metoden fra Object-klassen. Erstat assertEquals-metoden med java.lang.Object.equals()-metoden:

streng1.lig med(streng2) => returnerer sand

Så assertEquals(string1, string2) vil returnere sand.

  1. assertSame(streng3, streng4);

Funktionaliteten “assertSame()” har til formål at kontrollere, at de to objekter refererer til det samme objekt. Da string3="test" og string4="test", er både string3 og string4 af samme type, så assertSame(string3, string4) vil returnere sand.

  1. assertNotSame(streng1, streng3);

Funktionaliteten “assertNotSame()” har til formål at kontrollere, at de to objekter ikke refererer til det samme objekt. Da string1=”Junit” og string3=”test”, er både string1 og string3 af forskellige typer, så assertNotSame(string1, string3) vil returnere sand.

  1. assertNotNull(streng1);

Funktionaliteten “assertNotNull()” har til formål at kontrollere, at et objekt ikke er null. Da string1=”Junit”, som er en ikke-null-værdi, vil assertNotNull(string1) returnere sand.

  1. assertNull(streng5);

Funktionaliteten "assertNull()" har til formål at kontrollere, om et objekt er null. Da string5=null, som er en null-værdi, vil assertNull(string5) returnere sand.

  1. påståSand(variabel1 < variabel2);

Funktionaliteten "assertTrue()" har til formål at kontrollere, om en betingelse er sand. Da variabel1=1 og variabel2=2, hvilket viser, at betingelsen variabel1 < variabel2 er sand, vil assertTrue(variabel1 < variabel2) returnere sand.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

Funktionaliteten "assertArrayEquals()" har til formål at kontrollere, at det forventede array og det resulterende array er ens. Arraytypen kan være int, long, short, char, byte eller java.lang.Object. Da airethematicArrary1 = { 1, 2, 3 } og airethematicArrary2 = { 1, 2, 3 }, hvilket viser, at begge arrays er ens, vil assertArrayEquals(airethematicArrary1, airethematicArrary2) returnere sand.

Da alle syv hævder udsagn fra Junit4AssertionTest.java class return true, når du udfører test assert-klassen, returnerer den en vellykket test (se outputtet nedenfor).

Trin 4) Højreklik på Junit4AssertionTest.java og klik på Kør som -> JUnit. Du vil se output som angivet nedenfor:

JUnit Påstå eksempel

Ovenstående output viser et forventet vellykket testresultat.

Ofte Stillede Spørgsmål

Ja. AI-assistenter kan producere assertEquals, assertTrue og andre assertions ud fra en metodes forventede adfærd. Du bør stadig gennemgå de forventede værdier og kanttilfælde for at sikre, at testene er meningsfulde.

Ja. AI kan foreslå assertEquals versus assertSame eller assertArrayEquals baseret på, hvad du sammenligner. Dette reducerer almindelige fejl, såsom at kontrollere referencer, når du havde til hensigt at sammenligne værdier.

assertEquals kontrollerer værdilighed ved hjælp af equals() metoden. assertSame kontrollerer, at to referencer peger på præcis det samme objekt i hukommelsen. To objekter med samme værdi kan fejle assertSame.

Når en påstand fejler, JUnit kaster en AssertionError, markerer testen som mislykket og rapporterer den valgfrie besked sammen med de forventede og faktiske værdier for at hjælpe dig med at fejlsøge testen.

Opsummer dette indlæg med: