What changed in JUnit from 5 to 6
6 releases numbered after 5.14.4 up to and including 6.1.3, stable releases only. 5.14.4 and 6.1.3 are the newest stable releases of 5 and 6 we track; this page follows them as new ones ship.
12 changes across 6 releases
- Allow excluding engines from memory cleanup mode via new junit.platform.execution.memory.cleanup.engines.excluded configuration parameter that takes a comma-separated list of engine IDs
- JAVA_28 has been added to the JRE enum for use with JRE-based execution conditions
- Change API status of recommended method in ArgumentsProvider as well as ParameterDeclaration(s) as "maintained" rather than "experimental"
- Provide reachability metadata for junit-platform-engine to restore compatibility with GraalVM 25
- Fix NoTestsDiscoveredException for suites containing only dynamic tests
- The Suite Engine no longer logs "No TestIdentifier with unique ID" for failing tests
- Restore original values set by @SetSystemProperty when used with a @ParameterizedTest
- Fix a deadlock issue in NamespacedHierarchicalStore.computeIfAbsent(N, K, Function)
- Make @EnabledOnJre and @DisabledOnJre work reliably when used with JRE.OTHER in a test running on a Java runtime whose version is higher than the version of the last JAVA_* constant in the JRE enum
- Make ConsoleLauncher compatible with JDK 26 by avoiding final field mutations
- Enable recursive updates when using NamespacedHierarchicalStore.computeIfAbsent(N, K, Function)
- Allow using @ResourceLock on classes annotated with @ClassTemplate or @ParameterizedClass
One release in the range carries no categorized changes yet: 6.1.0. Their original notes, where the vendor published any, are below.
Original release notes, newest first
The list above is our reading of these notes; the originals from JUnit Team are here, one fold per release.
6.1.3JUnit 6.1.3
Date of Release: August 7, 2026 Scope: Bug fixes and enhancements since 6.1.0 For a complete list of all closed issues and pull requests for this release, consult the 6.1.3 milestone page in the JUnit repository on GitHub.
JUnit Platform
Bug Fixes
- Provide reachability metadata for junit-platform-engine to restore compatibility with GraalVM 25
JUnit Jupiter
No changes.
JUnit Vintage
No changes.
6.1.2JUnit 6.1.2
Date of Release: July 12, 2026 Scope: Bug fixes and enhancements since 6.1.1 For a complete list of all closed issues and pull requests for this release, consult the 6.1.2 milestone page in the JUnit repository on GitHub.
JUnit Platform
Bug Fixes
- Fix NoTestsDiscoveredException for suites containing only dynamic tests
JUnit Jupiter
No changes.
JUnit Vintage
No changes.
6.1.1JUnit 6.1.1
Date of Release: June 28, 2026 Scope: Bug fixes and enhancements since 6.1.0 For a complete list of all closed issues and pull requests for this release, consult the 6.1.1 milestone page in the JUnit repository on GitHub.
JUnit Platform
Bug Fixes
- The Suite Engine no longer logs "No TestIdentifier with unique ID" for failing tests.
New Features and Improvements
- Allow excluding engines from memory cleanup mode (in case it’s enabled) via new junit.platform.execution.memory.cleanup.engines.excluded configuration parameter that takes a comma-separated list of engine IDs (for example, junit-vintage,junit-jupiter).
JUnit Jupiter
Bug Fixes
- Restore original values set by @SetSystemProperty when used with a @ParameterizedTest.
New Features and Improvements
- JAVA_28 has been added to the JRE enum for use with JRE-based execution conditions.
JUnit Vintage
No changes.
6.1.0JUnit 6.1.0
JUnit 6.1.0 = Platform 6.1.0 + Jupiter 6.1.0 + Vintage 6.1.0
See Release Notes.
New Contributors
- @JarvisCraft made their first contribution in https://github.com/junit-team/junit-framework/pull/5633
- @Maran23 made their first contribution in https://github.com/junit-team/junit-framework/pull/5644
Full Changelog: https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0
6.0.3JUnit 6.0.3
Date of Release: February 15, 2026 Scope: Bug fixes and enhancements since 6.0.2 For a complete list of all closed issues and pull requests for this release, consult the 6.0.3 milestone page in the JUnit repository on GitHub.
JUnit Platform
Bug Fixes
- A deadlock issue in NamespacedHierarchicalStore.computeIfAbsent(N, K, Function) has been fixed.
JUnit Jupiter
Bug Fixes
- @EnabledOnJre and @DisabledOnJre once again work reliably when used with JRE.OTHER in a test running on a Java runtime whose version is higher than the version of the last JAVA_* constant in the JRE enum.
JUnit Vintage
No changes.
6.0.2JUnit 6.0.2
Date of Release: January 6, 2026 Scope: Bug fixes and enhancements since 6.0.1 For a complete list of all closed issues and pull requests for this release, consult the 6.0.2 milestone page in the JUnit repository on GitHub.
JUnit Platform
Bug Fixes
- Make ConsoleLauncher compatible with JDK 26 by avoiding final field mutations.
- Enable recursive updates when using NamespacedHierarchicalStore.computeIfAbsent(N, K, Function). This provides parity with the deprecated NamespacedHierarchicalStore.getOrComputeIfAbsent(N, K, Function)
JUnit Jupiter
Bug Fixes
- Allow using @ResourceLock on classes annotated with @ClassTemplate (or @ParameterizedClass).
- Change API status of recommended method in ArgumentsProvider as well as ParameterDeclaration(s) as "maintained" rather than "experimental".
JUnit Vintage
No changes.