Architektura JUnit 5. Część 6

Luxoft Training
2 min readSep 23, 2021

--

Ostatni artykuł z naszej serii o architekturze JUnit 5. Skierujmy teraz naszą uwagę na podejście JUnit 5.

Ostatni artykuł z naszej serii o architekturze JUnit 5. Skierujmy teraz naszą uwagę na podejście JUnit 5. JUnit 5 pozwala na podobne efekty jak w przypadku reguł JUnit 4 poprzez wprowadzenie własnych rozszerzeń. Kod jest krótszy i opiera się na deklaratywnym stylu adnotacji. Najpierw definiujemy klasę CustomExtension, która jest używana jako argument adnotacji @ExtendWith w testowanej klasie.

W Listing 9 wykonujemy następujące czynności:

  • Deklarujemy CustomExtension jako implementację interfejsów AfterEachCallback i BeforeEachCallback (1').
  • Zastępujemy metodę afterEach, która ma być wykonywana po każdej metodzie testowej z klasy testowej, która jest rozszerzona o CustomExtension (2').
  • Zastępujemy metodę beforeEach, która ma być wykonywana, zanim każda metoda testowa z klasy testowej zostanie rozszerzona o CustomExtension (3').

W Listing 10 wykonujemy następujące czynności:

  • Rozszerzamy JUnit5CustomExtensionTester o klasę CustomExtension (1').
  • Tworzymy metodę myCustomRuleTest i opisujemy ją @Test (2).

Ponieważ klasa testowa jest rozszerzana o klasę CustomExtension, wcześniej zdefiniowane metody beforeEach i afterEach są wykonywane odpowiednio przed i po każdej metodzie testowej.

Zwracamy uwagę na wyraźną różnicę w przejrzystości kodu i długości kodu między JUnit 4 i JUnit 5. Podejście JUnit 4 musi działać z trzema klasami, podejście JUnit 5 musi działać tylko z dwiema klasami. Kod, który ma być wykonany przed i po każdej metodzie testowej, jest izolowany w dedykowanej metodzie o jasnej nazwie. Po stronie klasy testowej wystarczy dodać do niej adnotację @ExtendWith.

Model rozszerzenia JUnit 5 można również wykorzystać do stopniowego zastępowania runnerów z JUnit 4. W przypadku już utworzonych rozszerzeń proces migracji jest prosty. Na przykład:

  • Aby przeprowadzić migrację testów Mockito, należy w testowanej klasie zamienić adnotację @RunWith (MockitoJUnitRunner.class) na adnotację @ExtendWith (MockitoExtension.class).
  • Aby przeprowadzić migrację testów Spring, należy w testowanej klasie zamienić adnotację @RunWith (SpringJUnit4ClassRunner.class) na adnotację @ExtendWith (SpringExtension.class).
  • W chwili pisania tego artykułu nie ma rozszerzenia dla testów Arquilliana.

Wnioski

W artykule omówiliśmy nową architekturę JUnit 5 i to, jak “wyłoniła się” z niedociągnięć poprzedniej wersji JUnit 4. Podkreśliliśmy modułowe podejście JUnit 5. Pokazaliśmy również migrację kodu JUnit 4 do JUnit 5, w tym: migrację z reguł do rozszerzeń; migrację reguł niestandardowych do rozszerzeń niestandardowych.

Interesujesz się Javą? Sprawdź nasze szkolenia

Catalin Tudose
Java and Web Technologies Expert

Originally published at https://www.luxoft-training.pl.

--

--

No responses yet