Junit Assert i AssertEquals z przykładem

⚡ Inteligentne podsumowanie

JUnit Metody Assert i AssertEquals określają status zaliczenia lub niezaliczenia przypadku testowego poprzez porównanie wartości oczekiwanych i rzeczywistych. W tym materiale wyjaśniono metody Assert udostępniane przez org.junit.Assert, w tym asercje wartości logicznych, wartości null, tożsamości, równości i tablic, wraz z kompletnym przykładem działania.

  • Cel: Metody asercji z org.junit.Assert weryfikują warunki i wykrywają błędy testów.
  • 🔢 Typy metod: Typowe sprawdzenia obejmują potwierdzenia wartości logicznych, null, identyczności, równości, równości tablicowej i komunikatu o błędzie.
  • 🟰 assertEquals: Porównuje wartości za pomocą metody equals(), wrapping najpierw prymitywów w obiekty.
  • 🔬 Zmiennoprzecinkowy: Przy porównywaniu wartości zmiennoprzecinkowych i zmiennoprzecinkowych wymagana jest tolerancja delta.
  • 🧪 Przykład: Klasa testowa i moduł uruchamiający demonstrują, że każde kluczowe polecenie assert zwraca wartość true.

JUnit Assert i AssertEquals

Czym jest Junit Assert?

Assert to metoda przydatna do określania statusu zaliczenia lub niezaliczenia przypadku testowego. Metody assert są dostarczane przez klasę org.junit.Assert, która rozszerza klasę java.lang.Object.

Istnieją różne typy twierdzeń, takie jak Boolean, Null, Identyczne, itp.

JUnit udostępnia klasę o nazwie Assert, która zapewnia szereg metod asercji przydatnych przy pisaniu przypadków testowych i wykrywaniu błędów testowych.

Metody potwierdzenia są dostarczane przez klasę org.junit.Assert, który rozszerza java.lang.Obiekt class.

JUnit Podaj metody

Boolean

Jeśli chcesz przetestować warunki logiczne (prawda lub fałsz), możesz użyć następujących metod assert:

  1. assertTrue (warunek)
  2. assertFalse (warunek)

Tutaj warunek jest wartością logiczną.

Obiekt zerowy

Jeśli chcesz sprawdzić wartość początkową obiektu/zmiennej, masz do dyspozycji następujące metody:

  1. twierdzenieNull(obiekt)
  2. twierdzenieNotNull(obiekt)

Tutaj obiekt jest Java obiekt, na przykład twierdzenieNull(rzeczywisty);

Identyczny

Jeśli chcesz sprawdzić, czy obiekty są identyczne (czyli porównać dwa odniesienia do tego samego obiektu), Java obiekt) lub inny:

  1. assertSame(oczekiwane, rzeczywiste) — Zwróci wartość true, jeśli oczekiwane == rzeczywiste.
  2. AssertNotSame(oczekiwane, rzeczywiste)

Twierdzenie równa się

Jeżeli chcesz sprawdzić równość dwóch obiektów, masz następującą metodę:

  • AssertEquals(oczekiwane, rzeczywiste)

Zwróci wartość true if oczekiwane.równe(rzeczywiste) zwraca prawdę.

Potwierdź, że tablica jest równa

Jeśli chcesz sprawdzić równość tablic, masz następującą metodę:

  • AssertArrayEquals(oczekiwane, rzeczywiste)

Powyższą metodę należy stosować, jeśli tablice mają tę samą długość. Dla każdej prawidłowej wartości dla i, możesz to sprawdzić w sposób podany poniżej:

  • assertEquals(oczekiwane[i], rzeczywiste[i])
  • assertArrayEquals(oczekiwane[i], rzeczywiste[i])

Wiadomość o niepowodzeniu

Jeśli chcesz zgłosić błąd asercji, masz to ponieść porażkę(), co zawsze kończy się werdyktem negatywnym.

  • fail(komunikat);

Możesz mieć metodę asercji z dodatkowym sznur parametr jako pierwszy parametr. Ten ciąg zostanie dołączony do komunikatu o błędzie, jeśli asercja się nie powiedzie. Na przykład: niepowodzenie (komunikat) można zapisać jako:

  • assertEquals(wiadomość, oczekiwana, rzeczywista)

JUnit AssertEquals

Posiadasz assertEquals(a, b), który opiera się na równa się() metoda klasy Object.

  • Tutaj będzie to oceniane jako a.równa się(b).
  • Tutaj testowana klasa służy do określenia odpowiedniej relacji równości.
  • Jeśli klasa nie zastępuje metody równa się() metoda przedmiot klasa, otrzyma domyślne zachowanie równa się() metoda, czyli tożsamość obiektu.

If a oraz b są prymitywne, takie jak bajt, int, booleanitd., wówczas dla assertEquals(a, b) zostanie wykonane następujące polecenie:

a oraz b zostaną przekonwertowane na odpowiadający im typ obiektu opakowania (Bajt, liczba całkowita, wartość logicznaitp.), a następnie a.równa się(b) zostaną ocenione.

Na przykład, rozważmy poniższe ciągi znaków o tych samych wartościach; przetestujmy to za pomocą assertEquals:

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

Powyższe polecenie assert zwróci wartość true, ponieważ obj1.equals(obj2) zwraca wartość true.

Twierdzenia zmiennoprzecinkowe

Jeśli chcesz porównać typy zmiennoprzecinkowe (np. Podwójna or unosić się), potrzebny jest dodatkowy wymagany parametr, delta, aby uniknąć problemów z błędami zaokrągleń podczas porównywania liczb zmiennoprzecinkowych.

Twierdzenie ocenia się w sposób podany poniżej:

  • Math.abs(oczekiwane – rzeczywiste) <= delta

Na przykład:

assertEquals(aDoubleWartość, innyDoubleWartość, 0.001)

JUnit Podaj przykład

Poniższy przykład pokazuje, jak potwierdzić warunek za pomocą JUnit potwierdzać metody.

Utwórzmy prostą klasę testową o nazwie Junit4AssertionTest.java oraz klasa biegacza testowego TestRunner.java.

W tym artykule utworzysz kilka zmiennych i ważnych instrukcji assert. JUnit.

W tym przykładzie wykonasz naszą klasę testową przy użyciu TestRunner.java.

Krok 1) Utwórzmy klasę obejmującą wszystkie ważne metody instrukcji assert w 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) Aby wykonać powyższą klasę, należy utworzyć klasę uruchamiającą testy:

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) Przeanalizujmy oczekiwany wynik krok po kroku. Rozważmy wszystkie instrukcje assert po kolei:

  1. assertEquals(string1, string2);

Teraz porównaj string1=”Junit” z string2=”Junit” z metodą equals klasy Object. Zastąp metodę assertEquals metodą java.lang.Object.equals():

string1.equals(string2) => zwraca wartość true

Tak więc assertEquals(string1, string2) zwróci prawdziwy.

  1. AsserSame(string3, string4);

Funkcjonalność „assertSame()” polega na sprawdzeniu, czy oba obiekty odnoszą się do tego samego obiektu. Ponieważ string3=”test” i string4=”test”, zarówno string3, jak i string4 są tego samego typu, więc assertSame(string3, string4) zwróci prawdziwy.

  1. AssertNotSame(string1, string3);

Funkcjonalność „assertNotSame()” polega na sprawdzeniu, czy oba obiekty nie odnoszą się do tego samego obiektu. Ponieważ string1=”Junit” i string3=”test”, zarówno string1, jak i string3 są różnych typów, więc assertNotSame(string1, string3) zwróci prawdziwy.

  1. twierdzenieNotNull(string1);

Funkcjonalność „assertNotNull()” służy do sprawdzania, czy obiekt nie jest nullem. Ponieważ string1=”Junit”, czyli wartość różna od nulla, assertNotNull(string1) zwróci prawdziwy.

  1. twierdzenieNull(string5);

Funkcjonalność „assertNull()” służy do sprawdzania, czy obiekt jest nullem. Ponieważ string5=null, czyli wartość null, assertNull(string5) zwróci prawdziwy.

  1. assertTrue(zmienna1 < zmienna2);

Funkcjonalność „assertTrue()” służy do sprawdzania, czy warunek jest spełniony. Ponieważ zmienna1=1 i zmienna2=2, co oznacza, że ​​warunek zmienna1 < zmienna2 jest spełniony, assertTrue(zmienna1 < zmienna2) zwróci prawdziwy.

  1. AssertArrayEquals(airethematicArrrary1, airethematicArrary2);

Funkcjonalność „assertArrayEquals()” polega na sprawdzeniu, czy oczekiwana tablica i tablica wynikowa są równe. Typ tablicy może być int, long, short, char, byte lub java.lang.Object. Ponieważ airethematicArrary1 = { 1, 2, 3 } i airethematicArrary2 = { 1, 2, 3 }, co oznacza, że ​​obie tablice są równe, assertArrayEquals(airethematicArrary1, airethematicArrary2) zwróci prawdziwy.

Ponieważ wszystkie siedem stwierdzeń potwierdza Junit4AssertionTest.java klasa zwraca wartość true, gdy wykonujesz test assert class, zwróci ona pomyślny test (zobacz wynik poniżej).

Krok 4) Kliknij prawym przyciskiem myszy plik Junit4AssertionTest.java i kliknij opcję Uruchom jako -> JUnit. Zobaczysz dane wyjściowe, jak podano poniżej:

JUnit Podaj przykład

Powyższe dane wyjściowe wskazują na oczekiwany, pomyślny wynik testu.

FAQ

Tak. Asystenci AI mogą generować assertEquals, assertTrue i inne asercje na podstawie oczekiwanego zachowania metody. Nadal należy sprawdzać wartości oczekiwane i przypadki brzegowe, aby upewnić się, że testy są sensowne.

Tak. Sztuczna inteligencja może sugerować assertEquals, assertSame lub assertArrayEquals na podstawie porównywanych wartości. Zmniejsza to liczbę typowych błędów, takich jak sprawdzanie referencji, gdy zamierzasz porównywać wartości.

Metoda assertEquals sprawdza równość wartości za pomocą metody equals(). Metoda assertSame sprawdza, czy dwa odwołania wskazują na dokładnie ten sam obiekt w pamięci. Dwa obiekty o równej wartości mogą zakończyć się niepowodzeniem metody assertSame.

Gdy twierdzenie zawodzi, JUnit zgłasza wyjątek AssertionError, oznacza test jako niepomyślny i raportuje opcjonalny komunikat wraz z oczekiwanymi i rzeczywistymi wartościami, aby ułatwić debugowanie testu.

Podsumuj ten post następująco: