JUnit 5 & Mockito
Test Java code with JUnit 5 and Mockito: assertions, lifecycle, parameterized tests, mocks, verification, test design, Spring test slices and Testcontainers.
What you'll learn
- Explain the role of unit, integration and end-to-end tests and set up JUnit, Mockito and AssertJ.
- Write clear JUnit Jupiter tests with assertions, lifecycle methods, nested structure and parameterized cases.
- Use JUnit extensions, temporary directories, timeouts, assumptions, dynamic tests and parallel execution.
- Isolate code with Mockito: stubs, matchers, answers, verification, captors, spies and BDD style.
- Design testable code, avoid test smells and flaky tests, and practise test-driven development.
- Test Spring Boot applications with slices, @MockitoBean, Testcontainers and WireMock, and measure test quality.
Syllabus
Unit Testing Foundations
JUnit Jupiter in Depth
- Assertions, Exceptions and AssertJ
- Lifecycle, Nested Tests, Tags and Display Names
- Parameterized Tests
Advanced JUnit Features
- The Extension Model, @TempDir and @Timeout
- Assumptions and Conditional Execution
- Dynamic Tests, Ordering and Parallel Execution
Mockito Basics
- Test Doubles: Dummies, Stubs, Fakes, Spies and Mocks
- Creating Mocks and Stubbing
- Argument Matchers and Advanced Stubbing
Verification and Advanced Mockito
- Verifying Interactions and Capturing Arguments
- Spies, Static and Final Mocking
- BDD Style and Mocking Guidelines
Testable Design and Test Quality
Testing Spring Boot Applications
- @SpringBootTest and Test Slices
- Integration Tests with Testcontainers
- Testing Repositories and HTTP Clients