Szkolenie JUnit dla zaawansowanych
Poziom
ZaawansowanyCzas
24h / 3 dniTermin
IndywidualnieCena
IndywidualnieSzkolenie z JUnit
Szkolenie poświęcone projektowaniu i utrzymywaniu testów automatycznych w aplikacjach Java i Spring Boot. Zakres obejmuje JUnit Platform i JUnit Jupiter, Mockito, AssertJ, model rozszerzeń, testy kontekstowe i integracyjne, WireMock, Testcontainers, testy kontraktowe oraz integrację zestawu testów z Mavenem, Gradle i potokiem CI/CD. Szkolenie ma charakter praktyczny i kończy się przygotowaniem zestawu testów jednostkowych oraz integracyjnych dla przykładowej aplikacji. Nie obejmuje podstaw programowania w Javie ani wprowadzenia do testów jednostkowych. Uczestnik powinien samodzielnie tworzyć testy w JUnit, korzystać z Mavena lub Gradle oraz znać podstawy Spring Boot. Do ćwiczeń z Testcontainers wymagana jest możliwość uruchamiania kontenerów w środowisku lokalnym.
programistów Java, inżynierów automatyzacji testów
osób odpowiedzialnych za jakość aplikacji, które samodzielnie tworzą testy jednostkowe w JUnit, znają podstawy Mockito, AssertJ i Spring Boot oraz potrafią uruchamiać projekt za pomocą Mavena lub Gradle
Czego się nauczysz na szkoleniu?t
- Skonfigurować projekt testowy oparty na JUnit Platform, JUnit Jupiter, Mockito i AssertJ z wykorzystaniem Mavena lub Gradle
- Projektować czytelne i deterministyczne testy parametryzowane, zagnieżdżone i powtarzane oraz zarządzać cyklem życia testów i zasobów
- Tworzyć własne rozszerzenia JUnit Jupiter oraz współdzielić konfigurację, zasoby i kod pomocniczy między testami
- Dobierać odpowiedni poziom testu i przygotowywać testy aplikacji Spring Boot, Spring Security, baz danych oraz integracji HTTP z wykorzystaniem WireMock i Testcontainers
- Zintegrować zestaw testów z potokiem CI/CD, generować raporty, skracać czas wykonania testów, diagnozować niestabilność oraz przygotować migrację z JUnit 4
Program szkolenia
DZIEŃ 1
Moduł 1: Podstawy strategii testów jednostkowych
- Rola testów jednostkowych w strategii jakości
- Izolacja, deterministyczność, czytelność i szybkość testów
- Dobre praktyki projektowania testów
- Antywzorce i źródła niestabilności testów
Moduł 2: JUnit Platform i JUnit Jupiter
- Architektura JUnit Platform
- Silniki testowe i JUnit Jupiter
- Konfiguracja zależności JUnit w projekcie Java
- Współdziałanie JUnit Jupiter, Mockito i AssertJ
Moduł 3: Mockito i AssertJ
- Makiety i stuby
- Weryfikacja interakcji
- Ścisłość testów
- Płynne asercje
- Asercje złożone i własne warunki
Moduł 4: Zaawansowane funkcje JUnit Jupiter
- Założenia testowe i warunki uruchomienia testów
- Cykl życia instancji testowych i zasobów
- Testy powtarzane i zagnieżdżone
- Testy parametryzowane
- Źródła argumentów i konwersja danych
- Pliki i katalogi tymczasowe
- Parametry metod testowych
DZIEŃ 2
Moduł 5: Extension Model
- Architektura rozszerzeń JUnit Jupiter
- Wbudowane rozszerzenia
- Punkty rozszerzeń
- Własne rozszerzenia
- Wspólna konfiguracja testów
- Współdzielone zasoby i kod pomocniczy
Moduł 6: JUnit w praktyce projektowej
- Konfiguracja JUnit Platform z Mavenem i Gradle
- Równoległość i kolejność testów
- Optymalizacja czasu wykonania testów
- Raporty testowe
- Integracja z potokiem CI/CD
- Migracja z JUnit 4 do JUnit Jupiter
Moduł 7: Testy jednostkowe i testy z kontekstem Spring Boot
- Kryteria wyboru poziomu testu
- Testy jednostkowe
- Testy warstwy
- Testy z pełnym kontekstem aplikacji
- Zakres i koszt uruchomienia kontekstu
Moduł 8: Wsparcie Spring Boot dla testów
- Adnotacja @SpringBootTest
- Tryby środowiska webowego
- Konfiguracja testowa
- Profile i właściwości testowe
- Atrapy komponentów i zależności zastępcze
- Testy z uruchomionym serwerem i losowym portem
- MockMvc i testy warstwy HTTP
- Test slices i zakres kontekstu aplikacji
DZIEŃ 3
Moduł 9: Testy integracji z bazą danych
- Baza danych w pamięci
- Baza danych w kontenerze
- Testy warstwy dostępu do danych
- Kryteria wyboru testu jednostkowego i integracyjnego
- Transakcje i izolacja danych
- Czysty stan środowiska testowego
Moduł 10: Testy integracji ze Spring Security
- Konfiguracja kontekstu bezpieczeństwa
- Uwierzytelnianie i autoryzacja w testach
- Testy dostępu do chronionych zasobów
- Scenariusze użytkowników i uprawnień
Moduł 11: WireMock i integracje HTTP
- Izolacja zewnętrznych usług HTTP
- Stuby i scenariusze WireMock
- Weryfikacja żądań
- RestTestClient
- WebTestClient
- TestRestTemplate
- Kryteria doboru klienta testowego
Moduł 12: Testcontainers i testy kontraktowe
- Środowiska zależności w kontenerach
- Konfiguracja kontenerów testowych
- Cykl życia kontenerów
- Izolacja i powtarzalność środowiska
- Podstawy testów kontraktowych
- Demonstracja scenariusza kontraktowego
Moduł 13: Projekt końcowy i synteza materiału
- Zestaw testów jednostkowych
- Zestaw testów integracyjnych
- Konfiguracja środowiska testowego
- Raportowanie wyników
- Analiza jakości i stabilności testów
- Wnioski i dobre praktyki