Architektura JUnit 5

Streszczenie: W tym artykule omówimy nową architekturę Junit 5, niedociągnięcia poprzedniej wersji JUnit 4 oraz sposób, w jaki podejście modułowe zmieniło stan rzeczy i jakie korzyści przyniosło. Pokażemy też, jak przeprowadzić migrację kodu JUnit 4 do JUnit 5, wykorzystując nowe funkcje.

kwi 13, 2021 205
Streszczenie: W tym artykule omówimy nową architekturę Junit 5, niedociągnięcia poprzedniej wersji JUnit 4 oraz sposób, w jaki podejście modułowe zmieniło stan rzeczy i jakie korzyści przyniosło. Pokażemy też, jak przeprowadzić migrację kodu JUnit 4 do JUnit 5, wykorzystując nowe funkcje.


1.Modułowość JUnit 5

JUnit 5 znaczy, że nadszedł czas na nowe podejście. Nie przyszło to jednak natychmiast; wymagało refleksji, a niedociągnięcia JUnit 4 stały się dobrym wkładem do potrzebnych ulepszeń. Architekci znają te problemy i zdecydowali się pójść drogą redukcji rozmiarów i modułowości.

Aby umożliwić ewolucję struktury JUnit, konieczne było nowe podejście, modułowe. Jego architektura musiała umożliwiać JUnit interakcję z różnymi zautomatyzowanymi klientami za pomocą różnych narzędzi i IDE. Logika w kontekście obaw wymagała:

  • API do pisania testów, dedykowane głównie dla programistów.
  • Mechanizm wykrywania i uruchamiania testów.
  • API umożliwiające łatwą interakcję z IDE i narzędziami oraz uruchamianie z nich testów.

W konsekwencji powstała architektura JUnit 5 zawiera trzy moduły (Rys.1):

  • JUnit Platform, które służy jako podstawa do uruchamiania frameworków testowych na JVM (Java Virtual Machine), dostarcza również API do uruchamiania testów z konsoli, IDE lub narzędzi do budowania.
  • JUnit Jupiter, połączenie nowego modelu programowania i modelu rozszerzeń do pisania testów i rozszerzeń w JUnit 5. Nazwa została wybrana z piątej planety naszego Układu Słonecznego, która jest również największa.
  • JUnit Vintage, silnik testowy do uruchamiania testów opartych na JUnit 3 i JUnit 4 na platformie, zapewniający niezbędną kompatybilność wsteczną.

Rysunek 1 Modulowa architektura JUnit 5.jpg

Rysunek 1 Modułowa architektura JUnit 5


2. JUnit 5 Platform

Idąc dalej z ideą modułowości, przyjrzymy się pokrótce artefaktom zawartym w platformie JUnit 5 (Rys. 2):

  • junit-platform-commons, wewnętrzna wspólna biblioteka JUnit, przeznaczona wyłącznie do użytku z samym frameworkiem JUnit. Jakiekolwiek użycie przez external parties nie jest obsługiwane.
  • junit-platform-console, która zapewnia obsługę wykrywania i wykonywania testów na platformie JUnit z poziomu konsoli.
  • junit-platform-console-standalone wykonywalny plik JAR zawierający wszystkie zależności. Jest używany przez Console Launcher, aplikację Java uruchamianą z wiersza poleceń, która umożliwia uruchamianie platformy JUnit z konsoli. Na przykład może służyć do uruchamiania testów JUnit Vintage i JUnit Jupiter oraz drukowania wyników testów na konsoli.
  • junit-platform-engine, publiczny interfejs API dla silników testowych.
  • junit-platform-launcher, publiczny interfejs API do konfigurowania i uruchamiania planów testów, zwykle używany przez IDE i narzędzia do budowania.
  • junit-platform-runner, runner do wykonywania testów i zestawów testów na platformie JUnit w środowisku JUnit 4.
  • junit-platform-suite-api, który zawiera adnotacje do konfigurowania zestawów testów na platformie JUnit.
  • junit-platform-surefire-provider, który zapewnia obsługę wykrywania i wykonywania testów na platformie JUnit przy użyciu wtyczki Maven Surefire.junit-platform-gradle-plugin, która zapewnia obsługę wykrywania i wykonywania testów na platformie JUnit za pomocą Gradle.

big picture JUnit 5 architecture.png

Interesujesz się Javą? Sprawdź nasze szkolenia


Catalin Tudose
Java and Web Technologies Expert

Udostępnij


Masz jeszcze jakieś pytania?
Skontaktuj się z nami
Thank you.
Your request has been received.