Junit Assert & AssertEquals mit Beispiel

โšก Intelligente Zusammenfassung

JUnit Die Methoden `Assert` und `AssertEquals` ermitteln den Status eines Testfalls (bestanden/nicht bestanden), indem sie erwartete und tatsรคchliche Werte vergleichen. Diese Ressource erlรคutert die von `org.junit.Assert` bereitgestellten `Assert`-Methoden, einschlieรŸlich der Assertions fรผr boolesche Werte, Nullwerte, Identitรคt, Gleichheit und Arrays, anhand eines vollstรคndigen Beispiels.

  • โœ… Zweck: Die Assert-Methoden von org.junit.Assert รผberprรผfen Bedingungen und erkennen Testfehler.
  • ๐Ÿ”ข Methodentypen: Boolesche, Null-, identische, Gleichheits-, Array-Gleichheits- und Fehlermeldungs-Assertions decken gรคngige Prรผfungen ab.
  • ๐ŸŸฐ assertEquals: Vergleicht Werte mithilfe der equals()-Methode, wrapping Primitive zuerst in Objekte umwandeln.
  • ๐Ÿ”ฌ Gleitkomma: Beim Vergleich von Gleitkomma- oder Doppelwerten ist eine Delta-Toleranz erforderlich.
  • ๐Ÿงช Ejemplo: Eine Testklasse und ein Test-Runner demonstrieren, dass jede wichtige Assert-Anweisung โ€žtrueโ€œ zurรผckgibt.

JUnit Assert und AssertEquals

Was ist Junit Assert?

Die Methode `assert` dient dazu, den Status eines Testfalls (bestanden/nicht bestanden) zu ermitteln. Die `assert`-Methoden werden von der Klasse `org.junit.Assert` bereitgestellt, die von der Klasse `java.lang.Object` erbt.

Es gibt verschiedene Arten von Zusicherungen, wie z. B. Boolean, Null, Identical usw.

JUnit bietet eine Klasse namens Assert, die eine Reihe von Assertionsmethoden bereitstellt, die beim Schreiben von Testfรคllen und beim Erkennen von Testfehlern nรผtzlich sind.

Die Assert-Methoden werden von der Klasse bereitgestellt org.junit.Assert, was die java.lang.Object Klasse.

JUnit Assert-Methoden

Boolean

Wenn Sie boolesche Bedingungen (wahr oder falsch) testen mรถchten, kรถnnen Sie die folgenden Assert-Methoden verwenden:

  1. assertTrue (Bedingung)
  2. assertFalse (Bedingung)

Hier ist die Bedingung ein boolescher Wert.

Nullobjekt

Wenn Sie den Anfangswert eines Objekts/einer Variablen รผberprรผfen mรถchten, stehen Ihnen folgende Methoden zur Verfรผgung:

  1. behauptenNull(Objekt)
  2. affirmNotNull(object)

Hierbei handelt es sich um ein Objekt. Java Objekt, z.B behauptenNull(tatsรคchlich);

Identische

Wenn Sie รผberprรผfen mรถchten, ob die Objekte identisch sind (d. h. zwei Referenzen auf dasselbe Objekt vergleichen). Java Objekt) oder anders:

  1. assertSame(expected, actual) โ€” Es wird wahr zurรผckgegeben, wenn erwartet == tatsรคchlich.
  2. behauptenNotSame(erwartet, tatsรคchlich)

Gleich behaupten

Um die Gleichheit zweier Objekte zu testen, steht Ihnen folgende Methode zur Verfรผgung:

  • affirmEquals(erwartet, tatsรคchlich)

Es wird true zurรผckgegeben, wenn erwartet.gleich(tatsรคchlich) gibt true zurรผck.

Array-Gleichheit bestรคtigen

Um die Gleichheit von Arrays zu testen, steht Ihnen folgende Methode zur Verfรผgung:

  • behauptenArrayEquals(erwartet, tatsรคchlich)

Die obige Methode muss verwendet werden, wenn die Arrays die gleiche Lรคnge haben. Fรผr jeden gรผltigen Wert fรผr i, kรถnnen Sie es wie folgt รผberprรผfen:

  • assertEquals(expected[i], actual[i])
  • assertArrayEquals(expected[i], actual[i])

Fehlermeldung

Wenn Sie einen Assertionsfehler auslรถsen mรถchten, mรผssen Sie dies tun scheitern()was stets zu einem negativen Urteil fรผhrt.

  • fail(message);

Sie kรถnnen eine Assertionsmethode mit einem zusรคtzlichen Schnur Der Parameter wird als erster Parameter รผbergeben. Diese Zeichenkette wird an die Fehlermeldung angehรคngt, falls die Assertion fehlschlรคgt. Zum Beispiel: Fehler (Meldung) kann geschrieben werden als:

  • assertEquals(message, expected, actual)

JUnit behauptenGleich

Sie haben assertEquals(a, b), die auf die gleich () Methode der Object-Klasse.

  • Hier wird es ausgewertet als a.gleich(b).
  • Hier wird die zu testende Klasse verwendet, um eine geeignete Gleichheitsrelation zu ermitteln.
  • Wenn eine Klasse die nicht รผberschreibt gleich () Methode der Betreff Wenn diese Klasse das Standardverhalten erhรคlt, wird sie dieses Verhalten beibehalten. gleich () Methode, d. h. Objektidentitรคt.

If a und b sind Primitive wie Byte, int, booleanusw., dann wird fรผr assertEquals(a, b) Folgendes durchgefรผhrt:

a und b werden in den entsprechenden Wrapper-Objekttyp konvertiert (Byte, Integer, Booleanusw.) und dann a.gleich(b) wird ausgewertet.

Betrachten wir beispielsweise die unten genannten Zeichenketten mit gleichen Werten; testen wir dies mit assertEquals:

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

Die obige Assert-Anweisung wird true zurรผckgeben, da obj1.equals(obj2) true zurรผckgibt.

Gleitkomma-Behauptungen

Wenn Sie Gleitkommazahlen vergleichen mรถchten (z. B. doppelt or schweben), benรถtigen Sie einen zusรคtzlichen erforderlichen Parameter, Delta, um Probleme mit Rundungsfehlern bei Gleitkommavergleichen zu vermeiden.

Die Aussage wird wie folgt ausgewertet:

  • Math.abs(expected โ€“ actual) <= delta

Beispielsweise:

assertEquals(aDoubleWert, ein andererDoubleWert, 0.001)

JUnit Beispiel behaupten

Das folgende Beispiel veranschaulicht, wie man eine Bedingung mithilfe von JUnit Assert-Methoden.

Lasst uns eine einfache Testklasse erstellen, die heiรŸt Junit4AssertionTest.java und eine Testlรคuferklasse TestRunner.java.

Sie werden einige Variablen und wichtige Assert-Anweisungen erstellen in JUnit.

In diesem Beispiel fรผhren Sie unsere Testklasse mit TestRunner.java aus.

Schritt 1) Lasst uns eine Klasse erstellen, die alle wichtigen Assert-Anweisungsmethoden abdeckt. 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);
    }
}

Schritt 2) Sie mรผssen eine Test-Runner-Klasse erstellen, um die obige Klasse auszufรผhren:

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

Schritt 3) Lassen Sie uns die erwartete Ausgabe Schritt fรผr Schritt analysieren. Betrachten wir alle Assert-Anweisungen nacheinander:

  1. assertEquals(string1, string2);

Vergleichen Sie nun string1="Junit" mit string2="Junit" mithilfe der equals-Methode der Klasse Object. Ersetzen Sie dazu die assertEquals-Methode durch die Methode java.lang.Object.equals().

string1.equals(string2) gibt true zurรผck

assertEquals(string1, string2) gibt also zurรผck was immer dies auch sein sollte..

  1. behauptenSame(string3, string4);

Die Funktion โ€žassertSame()โ€œ prรผft, ob zwei Objekte auf dasselbe Objekt verweisen. Da string3 = "test" und string4 = "test", sind sowohl string3 als auch string4 vom selben Typ, daher gibt assertSame(string3, string4) den Wert "test" zurรผck. was immer dies auch sein sollte..

  1. behauptenNotSame(string1, string3);

Die Funktion โ€žassertNotSame()โ€œ prรผft, ob zwei Objekte auf dasselbe Objekt verweisen. Da string1 = โ€žJunitโ€œ und string3 = โ€žtestโ€œ, sind string1 und string3 von unterschiedlichen Datentypen, daher gibt assertNotSame(string1, string3) โ€žfalseโ€œ zurรผck. was immer dies auch sein sollte..

  1. behauptenNotNull(string1);

Die Funktion โ€žassertNotNull()โ€œ prรผft, ob ein Objekt nicht null ist. Da string1 = โ€žJunitโ€œ ist und somit ein Wert ungleich null darstellt, gibt assertNotNull(string1) den Wert null zurรผck. was immer dies auch sein sollte..

  1. behauptenNull(string5);

Die Funktion โ€žassertNull()โ€œ prรผft, ob ein Objekt null ist. Da string5=null ist, also ein Nullwert vorliegt, gibt assertNull(string5) zurรผck, dass โ€ฆ was immer dies auch sein sollte..

  1. assertTrue(variable1 < variable2);

Die Funktion โ€žassertTrue()โ€œ dient dazu, zu prรผfen, ob eine Bedingung erfรผllt ist. Da Variable1 = 1 und Variable2 = 2 ist, was bedeutet, dass die Bedingung Variable1 < Variable2 erfรผllt ist, gibt assertTrue(Variable1 < Variable2) den Wert โ€žtrueโ€œ zurรผck. was immer dies auch sein sollte..

  1. behauptenArrayEquals(airethematicArrary1, airethematicArrary2);

Die Funktion โ€žassertArrayEquals()โ€œ prรผft, ob das erwartete und das resultierende Array รผbereinstimmen. Der Typ des Arrays kann int, long, short, char, byte oder java.lang.Object sein. Da airethematicArrary1 = { 1, 2, 3 } und airethematicArrary2 = { 1, 2, 3 }, was bedeutet, dass beide Arrays gleich sind, gibt assertArrayEquals(airethematicArrary1, airethematicArrary2) den Wert โ€žtrueโ€œ zurรผck. was immer dies auch sein sollte..

Da alle sieben Aussagen der Junit4AssertionTest.java Wenn Sie die Assert-Klasse ausfรผhren und die Klasse true zurรผckgibt, wird ein erfolgreicher Test zurรผckgegeben (siehe Ausgabe unten).

Schritt 4) Klicken Sie mit der rechten Maustaste auf Junit4AssertionTest.java und klicken Sie auf Ausfรผhren als -> JUnit. Sie sehen die Ausgabe wie folgt:

JUnit Beispiel behaupten

Die obige Ausgabe zeigt, wie erwartet, ein erfolgreiches Testergebnis.

Hรคufig gestellte Fragen

Ja. KI-Assistenten kรถnnen Assertions wie `assertEquals`, `assertTrue` und andere Zusicherungen basierend auf dem erwarteten Verhalten einer Methode generieren. Sie sollten dennoch die erwarteten Werte und Grenzfรคlle รผberprรผfen, um sicherzustellen, dass die Tests aussagekrรคftig sind.

Ja. Die KI kann je nach Vergleichsobjekten `assertEquals`, `assertSame` oder `assertArrayEquals` vorschlagen. Dadurch werden hรคufige Fehler vermieden, wie beispielsweise die Prรผfung von Referenzen anstatt von Werten.

`assertEquals` prรผft die Gleichheit von Werten mithilfe der `equals()`-Methode. `assertSame` prรผft, ob zwei Referenzen auf dasselbe Objekt im Speicher verweisen. Bei zwei Objekten mit gleichem Wert kann `assertSame` fehlschlagen.

Wenn eine Behauptung fehlschlรคgt, JUnit Wirft eine AssertionError-Ausnahme, markiert den Test als fehlgeschlagen und gibt die optionale Meldung zusammen mit den erwarteten und tatsรคchlichen Werten aus, um Ihnen beim Debuggen des Tests zu helfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: