Junit 5 — Twierdzenia i założenia. Część 1.
Streszczenie: JUnit to framework do testów jednostkowych dla języka programowania Java. Wersja JUnit 5 została przeprojektowana, aby rozwiązać niektóre szczególne problemy z poprzednich wersji. Ma nową architekturę i wiele nowych funkcji. Oprócz tych przedstawionych w naszym poprzednim artykule, omówimy tutaj bardziej szczegółowo twierdzenia i założenia.
- Twierdzenia w Junit 5
JUnit Jupiter zawiera więcej metod asercji, które wykonuje JUnit 4. Dodaje kilka, które dobrze nadają się do używania z 8 lambdami Java. Wszystkie asercje JUnit Jupiter są metodami statycznymi w klasie org.junit.jupiter.api.Assertions.
Porównanie asercji w JUnit 4 i JUnit 5 wygląda tak:
Komunikat w asercjach jest ostatnim parametrem metod:
Supplier pozwala na leniwą inicjalizację w przypadku złożonych komunikatów.
Tak wygląda fragment kodu wykorzystujący wiele możliwych twierdzeń:
Metoda assertAll wykona sprawdzanie wszystkich asercji. Ma opcjonalny parametr nagłówka. Parametr nagłówka pozwala rozpoznać grupę asercji w assertAll. Komunikat o awarii metody assertAll pokazuje szczegółowe informacje o każdej asercji pola w grupie.
Metody to:
Tak może wyglądać użycie metod assertAll:
Metoda assertTimeout zastępuje regułę limitu czasu JUnit 4.
assertTimeout czeka na zakończenie działania pliku wykonywalnego. Komunikat o błędzie może wyglądać następująco: przekroczenie limitu czasu 100 ms o 193 ms
assertTimeoutPreemptively zatrzymuje plik wykonywalny, gdy upłynie czas. Komunikat o błędzie może wyglądać następująco: przekroczono limit czasu po 100 ms
Tak może wyglądać użycie metod assertTimeout:
Metoda assertThrows zastępuje regułę JUnit 4 ExpectedException. Wszystkie twierdzenia można składać przeciwko zwróconej instancji rzutu. To sprawia, że testy są bardziej czytelne. Jako pliki wykonywalne możemy używać referencji lambda lub metod.
Metoda to:
Tak może wyglądać użycie metody assertThrows:
Interesuje Cię JUnit? Sprawdź nasze szkolenia.
Catalin Tudose
Java and Web Technologies Expert
Originally published at https://www.luxoft-training.pl.