Testowanie aplikacji za pomocą JUnit5 i EasyMock. Część 1
Testowanie aplikacji za pomocą JUnit5 i EasyMock. Część 1
Napisano już wiele dobrych projektów, które pomogą nam ułatwić korzystanie z pozorowanych obiektów w naszych projektach Java. W tej serii artykułów przyjrzymy się bliżej trzem najczęściej używanym modelom szkieletowym: EasyMock, JMock i Mockito. Zaczniemy serię od EasyMock.
19 paź 2021
815
Other articles
Testowanie aplikacji za pomocą JUnit5 i JMock. Część 2
Jak przygotować się do certyfikacji IIBA. Wyzwania i hacki
Testowanie aplikacji za pomocą JUnit5 i Mockito. Część 2
Testowanie aplikacji za pomocą JUnit5 i Mockito. Część 1
Testowanie aplikacji za pomocą JUnit5 i EasyMock. Część 2
Test Driven Development z użyciem JUnit 5. Część 6
Test Driven Development z użyciem JUnit 5. Część 5
Test Driven Development z użyciem JUnit 5. Część 4
Test Driven Development z uzyciem JUnit 5. Czesc 3
Test Driven Development z użyciem JUnit 5. Część 2
1. Korzystanie z EasyMock
Easymock to framework o otwartym kodzie źródłowym, który zapewnia przydatne klasy do mockowania obiektów.Aby z tym pracować, musimy dodać do pliku pom.xml zależności z listingu 1:
Listing 1 Zależności EasyMock Maven
Listing 2 przedstawia bardzo prosty Account object z dwiema właściwościami: account ID i saldem.
Listing 2 Klasa konta
Listing 3 Interfejs AccountManager
Listing 4 Klasa AccountService
Chcemy mieć możliwość testowania jednostkowego zachowania AccountService.transfer. W tym celu, dopóki implementacja interfejsu AccountManager nie będzie gotowa, będziemy korzystać z próbnej implementacji interfejsu AccountManager, ponieważ metoda przelewu korzysta z tego interfejsu i musimy to przetestować w izolacji.
Próbując wprowadzić EasyMock, tworzymy test TestAccountService przy użyciu EasyMock, jak na listingu 5.
Listing 5 Klasa TestAccountService
Wszystko, co robimy, to:
- Rozpoczynamy listę definiującą import z biblioteki EasyMock, której potrzebujemy (1). Widzimy, że w dużym stopniu polegamy na imporcie statycznym.
- W (2) deklarujemy obiekt, z którego chcielibyśmy mockować. Zauważ, że nasz AccountManager jest interfejsem; Przyczyna tego jest prosta - podstawowa struktura EasyMock może jedynie mockować obiekty interfejsu.
- W (3) wywołujemy metodę createMock, aby utworzyć makietę żądanej klasy.
- W (4) tworzymy dwa obiekty kont, których użyjemy w naszych testach. Następnie zaczynamy deklarować nasze oczekiwania.
- Dzięki EasyMock deklarujemy oczekiwania na dwa sposoby. Kiedy zwracany typ metody jest unieważniony, wywołujemy go na makiecie obiektu (jak w (5)), lub gdy metoda zwraca dowolny rodzaj obiektu, wtedy musimy użyć metod Expect-andReturn z EasyMock API (6 ).
- Gdy skończymy definiować oczekiwania, musimy wywołać metodę replay, aby zrobić announce (7).
- W (8) wywołujemy metodę przelewu, aby przelać pieniądze między dwoma rachunkami, aw (9) potwierdzamy oczekiwany wynik.
- Metoda @AfterEach, która jest wykonywana po każdej metodzie @Test, zawiera weryfikację oczekiwań. Za pomocą EasyMock możemy wywołać metodę verify z dowolnym obiektem pozorowanym (10), aby sprawdzić, czy zadeklarowane przez nas oczekiwania wywołania metody są wyzwalane. Uwzględnienie weryfikacji w metodzie @AfterEach umożliwia nam łatwe wprowadzanie nowych testów, a stąd będziemy polegać na wykonaniu metody weryfikacji.
Interesujesz się JUnit? Sprawdź nasze szkolenia
Catalin Tudose
Java and Web Technologies Expert