Co to jest Junit Assert?
Assert to metoda przydatna do określania statusu Pass lub Fail dla przypadku testowego. Metody assert są dostarczane przez klasę org.junit.Assert, która rozszerza klasę java.lang.Object.
Istnieją różne typy asercji, takie jak logiczne, zerowe, identyczne itp.
Junit udostępnia klasę o nazwie Assert, która zapewnia zestaw metod asercji przydatnych w pisaniu przypadków testowych i wykrywaniu niepowodzeń testów
Metody assert są dostarczane przez klasę org.junit.Assert, która rozszerza klasę java.lang.Object .
W tym samouczku nauczysz się:
- Metody JUnit Assert
- Boolean
- Obiekt pusty
- Identyczny
- Assert Equals
- Assert Array Equals
- Komunikat o niepowodzeniu
- JUnit assertEquals
- Asercje zmiennoprzecinkowe
- Przykład JUnit Assert
Metody JUnit Assert
Boolean
Jeśli chcesz przetestować warunki logiczne (prawda lub fałsz), możesz użyć następujących metod asercji
- assertTrue (warunek)
- assertFalse (warunek)
Tutaj warunek jest wartością logiczną.
Obiekt pusty
Jeśli chcesz sprawdzić początkową wartość obiektu / zmiennej, masz następujące metody:
- assertNull (obiekt)
- assertNotNull (obiekt)
W tym przypadku obiekt jest obiektem Java, np. AssertNull (faktyczny);
Identyczny
Jeśli chcesz sprawdzić, czy obiekty są identyczne (tj. Porównując dwa odwołania do tego samego obiektu Java), czy różne.
- assertSame (oczekiwane, rzeczywiste), zwróci wartość true, jeśli oczekiwano == rzeczywiste
- assertNotSame (oczekiwane, rzeczywiste)
Assert Equals
Jeśli chcesz przetestować równość dwóch obiektów, masz następujące metody
- assertEquals (oczekiwane, rzeczywiste)
Zwróci prawdę, jeśli: oczekiwane. Quals (rzeczywiste) zwróci prawdę.
Assert Array Equals
Jeśli chcesz przetestować równość tablic, masz następujące metody, jak podano poniżej:
- assertArrayEquals (oczekiwane, rzeczywiste)
Powyższą metodę należy zastosować, jeśli tablice mają tę samą długość, dla każdej poprawnej wartości dla i można to sprawdzić, jak podano poniżej:
- assertEquals (oczekiwane [i], rzeczywiste [i])
- assertArrayEquals (oczekiwane [i], rzeczywiste [i])
Komunikat o niepowodzeniu
Jeśli chcesz zgłosić błąd asercji, użyj funkcji fail (), która zawsze skutkuje werdyktem niepowodzenia.
- Niepowodzenie (wiadomość);
Możesz mieć metodę asercji z dodatkowym parametrem String jako pierwszym parametrem. Ten ciąg zostanie dołączony do komunikatu o błędzie, jeśli potwierdzenie nie powiedzie się. Np. Niepowodzenie (komunikat) można zapisać jako
- assertEquals (wiadomość, oczekiwana, rzeczywista)
JUnit assertEquals
Masz assertEquals (a, b), która opiera się na metodzie equals () klasy Object.
- Tutaj zostanie oceniony jako a. Quals (b).
- Tutaj testowana klasa służy do określenia odpowiedniej relacji równości.
- Jeśli klasa nie zastępują equals () metody obiektu klasy, to dostanie domyślne zachowanie equals () metodę, czyli tożsamość obiektu.
Jeśli a i b są prymitywami, takimi jak bajt , int , boolean itp., To dla assertEquals (a, b) zostanie wykonane następujące czynności:
a i b zostaną przekonwertowane na ich równoważny typ obiektu opakowania ( Byte, Integer , Boolean itp.), a następnie zostaną obliczone a.equals (b) .
Na przykład: weźmy pod uwagę wymienione poniżej ciągi o takich samych wartościach, przetestujmy je za pomocą assertTrue
String obj1 = "Junit";String obj2 = "Junit";assertEquals (obj1, obj2);
Powyższa instrukcja assert zwróci true, ponieważ obj1.equals (obj2) zwróci true.
Asercje zmiennoprzecinkowe
Kiedy chcesz porównać typy zmiennoprzecinkowe (np. Double lub float ), potrzebujesz dodatkowej wymaganej delty parametru, aby uniknąć problemów z błędami zaokrągleń podczas wykonywania porównań zmiennoprzecinkowych.
Stwierdzenie ocenia, jak podano poniżej:
- Math.abs (oczekiwane - rzeczywiste) <= delta
Na przykład:
assertEquals (aDoubleValue, anotherDoubleValue, 0,001)
Przykład JUnit Assert
Poniższy przykład pokazuje, jak potwierdzić warunek za pomocą metod asercji JUnit.
Utwórzmy prostą klasę testową o nazwie Junit4AssertionTest.java i klasę uruchamiającą testy TestRunner.java .
Utworzysz kilka zmiennych i ważnych instrukcji assert w JUnit.
W tym przykładzie wykonasz naszą klasę testową przy użyciu TestRunner.java
Krok 1) Stwórzmy klasę obejmującą wszystkie ważne metody instrukcji assertów w junit:
Junit4AssertionTest.java
pakiet guru99.junit;import static org.junit.Assert. *;import org.junit.Test;public class Junit4AssertionTest {@Testpublic void testAssert () {// Deklaracja zmiennejString string1 = "Junit";String string2 = "Junit";String string3 = "test";String string4 = "test";String string5 = null;int zmienna1 = 1;int zmienna2 = 2;int [] airethematicArrary1 = {1, 2, 3};int [] airethematicArrary2 = {1, 2, 3};// Instrukcje AssertassertEquals (ciąg1, ciąg2);assertSame (ciąg3, ciąg4);assertNotSame (ciąg1, ciąg3);assertNotNull (string1);assertNull (string5);assertTrue (zmienna1Krok 2) Musisz utworzyć testową klasę uruchamiającą, aby wykonać powyższą klasę:
TestRunner.java
pakiet 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) {Wynik wynikowy = JUnitCore.runClasses (Junit4AssertionTest.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Wynik ==" + result.wasSuccessful ());}}Krok 3) Przeanalizujmy krok po kroku oczekiwane wyniki:
Rozważ wszystkie stwierdzenia assert jeden po drugim:
- assertEquals (ciąg1, ciąg2);
Teraz porównaj string1 = "Junit" z string2 = "Junit" z metodą equals klasy obiektu. Zastąpienie metody assertEquals z metody java.lang.Object.equals ():
string1.equals (string2) => zwraca prawdę
Więc assertEquals (string1, string2) zwróci true .
- assertSame (ciąg3, ciąg4);
Funkcjonalność „assertSame ()” polega na sprawdzeniu, czy te dwa obiekty odnoszą się do tego samego obiektu.
Ponieważ string3 = "test" i string4 = "test" oznacza, że zarówno string3, jak i string4 są tego samego typu, więc assertSame (string3, string4) zwróci wartość true .
- assertNotSame (ciąg1, ciąg3);
Funkcjonalność „assertNotSame ()” polega na sprawdzeniu, czy te dwa obiekty nie odnoszą się do tego samego obiektu.
Ponieważ string1 = "Junit" i string3 = "test" oznaczają, że zarówno string1, jak i string3 są różnych typów, więc assertNotSame (string1, string3) zwróci wartość true .
- assertNotNull (string1);
Funkcjonalność „assertNotNull ()” polega na sprawdzaniu, czy obiekt nie jest pusty.
Ponieważ string1 = "Junit", który jest wartością inną niż null, więc assertNotNull (string1) zwróci wartość true .
- assertNull (string5);
Funkcją „assertNull ()” jest sprawdzenie, czy obiekt jest pusty.
Ponieważ string5 = null, który jest wartością zerową, więc assertNull (string5) zwróci wartość true .
- assertTrue (zmienna1
Funkcją „assertTrue ()” jest sprawdzenie, czy warunek jest prawdziwy.
Ponieważ zmienna1 = 1 i zmienna2 = 2, co pokazuje, że warunek zmienna1
true .
- assertArrayEquals (airethematicArrary1, airethematicArrary2);
Funkcja „assertArrayEquals ()” polega na sprawdzeniu, czy oczekiwana tablica i wynikowa tablica 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} pokazuje, że obie tablice są równe, więc assertArrayEquals (airethematicArrary1, airethematicArrary2) zwróci wartość true
Ponieważ wszystkie siedem instrukcji assert klasy Junit4AssertionTest.java zwraca wartość true, dlatego po wykonaniu klasy assert testu zwróci ona pomyślnie test. (patrz dane wyjściowe poniżej)
Krok 4) Kliknij prawym przyciskiem myszy Junit4AssertionTest.java i kliknij runAs-> JUnit. Zobaczysz dane wyjściowe, jak podano poniżej:
Powyższe dane wyjściowe pokazują pomyślny wynik testu, zgodnie z oczekiwaniami.
Podsumowanie:
W tym samouczku nauczyłeś się wszystkich ważnych typów metod asercji udostępnianych przez JUnit. Widzieliście również przykłady stwierdzeń assert. Co pokazuje, że jeśli wszystkie instrukcje assert zwrócą prawdę, to testowy interfejs GUI zwróci prawdziwy wynik, a jeśli pojedynczy test się nie powiedzie, zwróci wynik niepomyślny.