JUnit 5 - Nowa Architektura, Nowe Funkcje

JUnit 5 - Nowa Architektura, Nowe Funkcje

Niniejszy artykuł będzie krótkim wprowadzeniem do JUnit 5, aby zapewnić czytelnikowi możliwość zrozumienia nowej architektury i nowych możliwości oraz by mógł być w stanie dalej go poznawać.
19 mar 2019 1676
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. Posiada nową architekturę, z możliwością tworzenia hierarchii zagnieżdżonych testów, z nowymi możliwościami asercji i założeń, z dynamicznymi i sparametryzowanymi testami.

Niniejszy artykuł będzie krótkim wprowadzeniem do JUnit 5, aby zapewnić czytelnikowi możliwość zrozumienia nowej architektury i nowych możliwości oraz by mógł być w stanie dalej go poznawać.

1.Co to jest JUnit? Co to jest TDD?

JUnit, jako framework do testów jednostkowych dla języka programowania Java, jest bardzo ważnym narzędziem dla podejścia opartego na testowaniu. Jest częścią rodziny frameworków do testów jednostkowych, zwanych łącznie xUnit, pochodzących z SUnit.
JUnit jest połączony jako JAR w czasie kompilacji i najczęściej uwzględnianą zewnętrzną biblioteką w projektach Java.

TDD (Test Driven Development) to proces tworzenia oprogramowania, który polega na powtarzaniu bardzo krótkiego cyklu rozwojowego: po pierwsze, wymagania są przekształcane w konkretne przypadki testowe; następnie oprogramowanie zostało ulepszone, aby przejść nowe testy.

Jest to sprzeczne z rozwojem oprogramowania, które umożliwia dodanie oprogramowania, gdzie nie udowodniono, że spełnia wymagania.

Korzyści TDD obejmują:
  • Programista kieruje się jasnymi celami
  • Kod jest bezpieczniejszy
  • Nieprawidłowy kod można odizolować
  • Nowa funkcjonalność może być łatwo wprowadzona
  • Testy dokumentują aplikację

Piramida testów wygląda tak:

Piramida testow.png


z naciskiem na naszą dyskusję na poziomie testów jednostkowych. W rzeczywistym scenariuszu deweloper może być odpowiedzialny za testy jednostkowe, testowanie komponentów, testowanie integracji, testowanie oparte na zachowaniu.

2.Niedociągnięcia JUnit 4

JUnit 4, wydany w 2006 roku, zapewnia prostą i monolityczną architekturę.

jar_file.png


Cała jego funkcjonalność jest skoncentrowana w pojedynczym pliku JAR. Pomimo pozornej prostoty spowodowało to szereg problemów, które były coraz silniejsze wraz z upływem czasu.

Fakt, że dostarczony interfejs API nie był elastyczny, sprawił, że IDE i narzędzia, które korzystały z JUnit, były ze sobą ściśle powiązane. Narzędzia te musiały przejść do wewnętrznych elementów klas JUnit, a nawet użyć odzwierciedlenia, aby uzyskać potrzebne informacje.

Ponieważ ten sam pojedynczy JAR był używany przez wszystkich i wszystkie narzędzia oraz środowiska IDE były z nim tak ściśle powiązane, możliwości ewolucji JUnit zostały poważnie ograniczone. Używając go, zmiana dowolnej poufnej zmiennej lub metody, mogła spowodować ich uszkodzenie. Nowy interfejs API, zaprojektowany dla tego rodzaju narzędzi, oraz nowa architektura spowodowały konieczność dalszej poprawy.

3.Nowe podejście modułowe

Nowe podejście, modułowe, było konieczne, aby umożliwić ewolucję JUnit. Konieczne było logiczne rozdzielenie obaw:

  • API do pisania testów dedykowanych głównie programistom
  • Mechanizm wykrywania i uruchamiania testów
  • Oraz interfejs API, który umożliwia łatwą interakcję z IDE i narzędziami oraz uruchamianie z nich testów

W rezultacie wynikowa architektura JUnit 5 zawierała 3 moduły:

architektura JUnit 5.png


Platforma JUnit, która służy jako podstawa do uruchomienia ram testowych w JVM. Dostarcza także API do uruchamiania testów z konsoli, IDE lub narzędzi do budowania.

JUnit Jupiter to połączenie nowego modelu programowania i modelu rozszerzeń do pisania testów i rozszerzeń w JUnit 5. Nazwa została nadana od piątej planety naszego Układu Słonecznego, która jest również największą.

JUnit Vintage zapewnia silnik testowy do uruchamiania testów opartych na JUnit 3 i JUnit 4 na platformie, zapewniając niezbędną kompatybilność wsteczną.

Zainteresowany JUnit? Sprawdź nasze szkolenia.



Catalin Tudose
Java and Web Technologies Expert

Udostępnij

Masz jeszcze jakieś pytania?
Skontaktuj się z nami
Thank you!
The form has been submitted successfully.