Architektura JUnit 5. Część 6
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.