JUnit 5 & 6
Modern testing with JUnit Jupiter — expressive, parameterized and extensible tests — plus a clean path onto the JUnit 6 generation. A code-first training that leaves your team writing tests worth trusting.
What your team can do after
Concrete, transferable skills — the Jupiter API used the way it was meant to be.
Write expressive Jupiter tests
Use JUnit 5 assertions, assumptions, lifecycle and @Nested structure to write tests that read as a specification, not a chore.
Parameterize and generate
Cover cases without copy-paste — parameterized tests, argument sources, and dynamic tests generated at runtime.
Use the extension model
Replace JUnit 4 runners and rules with the Jupiter extension model — lifecycle callbacks, parameter resolvers, reusable test infrastructure.
Migrate from JUnit 4
Move a JUnit 4 suite forward — the Vintage engine for coexistence, then a mapping of rules/runners to their Jupiter equivalents.
Move onto JUnit 6
Adopt the JUnit 6 generation cleanly — the raised Java baseline, the platform/API cleanups, and what to change when upgrading a JUnit 5 suite.
Agenda
Six modules, each ending in a hands-on lab — written, run and refactored live.
- Jupiter fundamentals
Test structure, assertions, assumptions, the JUnit Platform architecture.
Lab: write a first well-structured Jupiter suite. - Lifecycle & organisation
Lifecycle callbacks, instance lifecycle, `@Nested`, `@Tag`, display names.
Lab: restructure a flat suite into readable nests. - Parameterized & dynamic tests
Argument sources, converters, aggregators; runtime-generated dynamic tests.
Lab: collapse duplicated tests into parameterized cases. - The extension model
Writing extensions, parameter resolvers, reusable test infrastructure.
Lab: build an extension that replaces a JUnit 4 rule. - Migrating from JUnit 4
The Vintage engine, coexistence, and mapping runners/rules to Jupiter.
Lab: migrate a JUnit 4 class and retire its rules. - Onto JUnit 6
The JUnit 6 generation: raised Java baseline, API/platform cleanups, build setup and CI.
Lab: upgrade a JUnit 5 suite and fix the fallout.
Who it's for
Java developers and teams who want tests that are expressive, maintainable and current — whether starting fresh on Jupiter, migrating off JUnit 4, or upgrading to the JUnit 6 generation.
Prerequisite: everyday Java; no prior JUnit 5 experience required. Pairs naturally with Mutation Testing.
Logistics
📋 Course details
- Formats
- On-site · live-online · on-demand (in preparation)
- Price
- On request — tailored to each client
- Duration
- Typically 1–2 days — depth and agenda tailored to your team
- Languages
- English or German
- Group size
- Private team cohorts or individual seats on scheduled dates
- Trainer
- Sven Ruppert, author of jCustos — long-time Java developer and speaker