Klasa JUnit Assertions zawiera zbiór metod statycznych, które umożliwiają przeprowadzanie testów jednostkowych. Asercje są jedną z podstawowych funkcji JUnit. Ta klasa ma ponad pięćdziesiąt różnych metod. Niektóre testy klasy Assertions zakończą się niepowodzeniem, jeśli warunek jest spełniony, podczas gdy inne zakończą się niepowodzeniem, jeśli warunek jest fałszywy.
Klasa Assertions ma również wiele przeciążonych metod. Każda metoda potwierdzenia ma co najmniej dwie przeciążone metody. Odkryj niektóre z bardziej popularnych metod klas Assertions i dowiedz się, jak ich używać do wykonywania testów jednostkowych.
Metoda AssertEquals
Metoda AssertEquals JUnit 5 ma ponad dziesięć odmian. Ta metoda jest jedną z bardziej popularnych metod klasy Assertions. Jedna odmiana metody assertEquals przyjmuje wartość oczekiwaną i funkcję, którą chcesz oszacować (wartość rzeczywista). Drugi główny wariant przyjmuje dodatkowy trzeci argument. Jest to komunikat o błędzie, który zostanie wyświetlony, jeśli Test jednostkowy JUnit zawodzi.
Przeciążenie metody attachEquals ma miejsce z różnymi typami danych. Niektóre metody przeciążania attachEquals przyjmują czwarty argument o nazwie delta. Inne wersje zastępują ciąg znaków awarii interfejsem funkcjonalnym dostawcy w postaci wyrażenie lambda.
AsercjeMetody Klasa Java
pakiet com.program;
publicznyklasaTwierdzeniaMetody{
publicznystatycznyintkwadrat(int liczba){
zwrócić liczba * liczba;
}
}
Powyższa klasa Java AssertionsMethods ma jedną metodę o nazwie kwadrat. Metoda kwadratowa przyjmuje wartość całkowitą i zwraca jej kwadrat. Aby przetestować metodę kwadratową i dowolną przyszłą metodę z klasy AssertionsMethods, musisz utworzyć przypadek testowy JUnit.
Przypadek testowy AssertionsMethodsTest JUnit
pakiet com.program;
importstatycznyorganizacja.junit.Zapewniać.assertEquals;
importstatycznyorganizacja.junit.Jowisz.api.Twierdzenia.*;importorganizacja.junit.Jowisz.api.Test;
klasaTwierdzeniaMetodyTest{
@Test
próżniatestKwadrat(){
AssertEquals(25, Metody asercji.kwadrat(5));
attachEquals (36, AssertionMethods.square (6), "Twoje wartości kwadratowe nie pasują.");
attachEquals (49, AssertionMethods.square (7), () ->"Twoje wartości kwadratowe nie pasują.");
}
}
W metodzie testSquare() do testowania metody square() używane są trzy odmiany metody attachEquals(). Każde AssertEquals() jest sukcesem, ponieważ wszystkie oczekiwane wartości pasują do rzeczywistych wartości zwracanych przez metodę square().
Metoda AssertNull
Klasa JUnit Assertions ma dokładnie trzy metody attachNull. Każda z tych metod przyjmuje jeden lub więcej argumentów i potwierdza, czy dany obiekt ma wartość null. Jeśli dany obiekt nie jest pusty, test zakończy się niepowodzeniem.
@Test
publicznypróżniatestStringValue(){
Strunowy ciągWartość = zero;
attachNull (stringValue);
attachNull (stringValue, "Twoja wartość ciągu nie jest pusta");
attachNull (stringValue, () ->"Twoja wartość ciągu nie jest pusta");
}
Pierwsza metoda attachNull() pobiera obiekt typu string i sprawdza, czy ma on wartość null. Druga metoda assertNull() pobiera obiekt ciągu i komunikat ciągu do wyświetlenia w przypadku niepowodzenia testu. Trzecia i ostatnia metoda assertNull() pobiera obiekt, który chcesz ocenić, oraz interfejs funkcjonalny dostawcy.
W powyższym przypadku testowym interfejs dostawcy działa jako cel przypisania wyrażenia lambda. Wyrażenie lambda generuje komunikat o błędzie, jeśli test się nie powiedzie.
Metoda AssertTrue
Metoda attachTrue() ma sześć odmian. Każda metoda potwierdza, czy dany warunek jest prawdziwy. Jeśli warunek attachTrue() jest fałszywy, test zakończy się niepowodzeniem.
@Test
próżniaTestEvenNumbers(){
int numer1 = 10;
int liczba2 = 16;
int liczba3 = 26;
AssertTrue (num1 < num2);
AssertTrue (num3 > liczba2, "Twój stan nie jest prawdziwy.");
AssertTrue (num1 < num3, () ->" Twój stan nie jest prawdziwy.");
AssertTrue(() -> liczba1%2 == 0);
AssertTrue(() -> liczba 2%2 == 0, "Twoja wartość nie jest liczbą parzystą.");
AssertTrue(() -> liczba3%2 == 0, () ->"Twoja wartość nie jest liczbą parzystą.");
}
Metoda testEvenNumbers() pokazuje, jak używać wszystkich sześciu metod attachTrue(). Wszystkie powyższe metody są prawdziwe, dlatego ten test jednostkowy jest wykonywany bez awarii lub błędu.
- attachTrue (warunek logiczny): ta metoda przyjmuje warunek logiczny i potwierdza, czy jest prawdziwy. Przykład tej metody w powyższym kodzie potwierdza, że pierwsza wartość całkowita jest mniejsza niż druga.
- attachTrue (warunek logiczny, komunikat ciągu): ta metoda pobiera warunek logiczny do przetestowania i łańcuch do wyświetlenia, jeśli jest fałszywy.
- attachTrue (warunek logiczny, dostawca
messageSupplier): ta metoda przyjmuje interfejs funkcjonalny Boolean i Supplier jako wyrażenie lambda. Dostawca komunikatów zawiera ciąg do wyświetlenia, jeśli warunek logiczny jest fałszywy. - attachTrue (BooleanSupplier booleanSupplier): ta metoda przyjmuje interfejs funkcjonalny BooleanSupplier w postaci wyrażenia lambda, którego wynikiem jest prawda lub fałsz. Przykład tej metody w kodzie używa wyrażenia lambda. Testuje resztę pierwszej liczby całkowitej podzieloną przez dwa, aby określić, czy jest ona parzysta, czy nieparzysta.
- attachTrue (BooleanSupplier booleanSupplier, String message): ta metoda przyjmuje interfejs funkcjonalny BooleanSupplier w postaci wyrażenia lambda. Pobiera również komunikat tekstowy do wydrukowania, jeśli BooleanSupier nie jest prawdziwy.
- attachTrue (BooleanSupplier booleanSupplier, Dostawca
messageSupplier): ta metoda wymaga interfejsu funkcjonalnego BooleanSupplier do potwierdzenia. Pobiera również interfejs funkcjonalny dostawcy, który jest wyrażeniem lambda, które drukuje wartość ciągu, jeśli test się nie powiedzie.
Metoda AssertFalse
Metoda attachFalse() jest przeciwieństwem metody attachTrue(). Ta metoda ocenia dany warunek, aby sprawdzić, czy jest fałszywy. Jeśli dany warunek jest spełniony, test assertFalse() zakończy się niepowodzeniem. Metoda AssertFalse() ma również sześć odmian, które akceptują te same argumenty, co ich odpowiedniki attachTrue().
@Test
próżniaTestNotEvenNumbers(){
int numer1 = 11;
int liczba2 = 17;
int liczba3 = 27;
AssertFalse (num2 < num1);
AssertFalse (num2 > numer3, " Twój stan nie jest fałszywy.");
AssertFalse (num3 < liczba1, () ->" Twój stan nie jest fałszywy.");
AssertFalse(() -> liczba1%2 == 0);
AssertFalse(() -> liczba 2%2 == 0, "Twoja wartość jest liczbą parzystą.");
AssertFalse(() -> liczba3%2 == 0, () ->"Twoja wartość jest liczbą parzystą.");
}
Wszystkie sześć metod attachFalse() w metodzie testNotEvenNumbers() daje wynik false, co oznacza, że testy assertFalse() zakończyły się pomyślnie.
Korzyści z testów jednostkowych
Testowanie jednostkowe jest integralną częścią procesu tworzenia oprogramowania. Duże projekty oprogramowania kończą się niepowodzeniem z różnych powodów, od zespołów, które nad nimi pracują, po podejścia programistyczne.
Celem testów jednostkowych jest wyeliminowanie awarii oprogramowania poprzez zapewnienie wczesnego wykrywania błędów. Wymaga to od zespołów opracowania jasnych specyfikacji, ulepszenia projektowania oprogramowania poprzez dokumentację błędów oraz zapewnienia wsparcia w zakresie konserwacji oprogramowania.
Testy jednostkowe nie są jedynym podejściem do testowania oprogramowania, które powinieneś zastosować w swoim cyklu rozwoju, to po prostu bardzo dobre miejsce na rozpoczęcie.