# JUnit: what changed from 5 to 6 - Product: JUnit (https://whatsnew.fyi/product/junit) - Vendor: JUnit Team - Range: changelog entries numbered after 5.14.4 up to and including 6.1.3, stable releases only - Entries below: 6 releases (newest first) - Resolved: 5 is 5.14.4 and 6 is 6.1.3, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 0 - Page: https://whatsnew.fyi/product/junit/compare/5...6 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (12 changes, grouped by kind) ### Added #### 6.1.1 (2026-06-28) - 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 ### Changed #### 6.0.2 (2026-01-06) - Change API status of recommended method in ArgumentsProvider as well as ParameterDeclaration(s) as "maintained" rather than "experimental" ### Fixed #### 6.1.3 (2026-08-07) - Provide reachability metadata for junit-platform-engine to restore compatibility with GraalVM 25 #### 6.1.2 (2026-07-12) - Fix NoTestsDiscoveredException for suites containing only dynamic tests #### 6.1.1 (2026-06-28) - 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 #### 6.0.3 (2026-02-15) - 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 #### 6.0.2 (2026-01-06) - 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 carries no categorized changes yet: 6.1.0._ ## Release notes ### 6.1.3 — JUnit 6.1.3 - Date: 2026-08-07 - Version: 6.1.3 - Original notes: https://github.com/junit-team/junit-framework/releases/tag/r6.1.3 - Permalink: https://whatsnew.fyi/product/junit/releases/6.1.3 - **fixed** — Provide reachability metadata for junit-platform-engine to restore compatibility with GraalVM 25 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.2 — JUnit 6.1.2 - Date: 2026-07-12 - Version: 6.1.2 - Original notes: https://github.com/junit-team/junit-framework/releases/tag/r6.1.2 - Permalink: https://whatsnew.fyi/product/junit/releases/6.1.2 - **fixed** — Fix NoTestsDiscoveredException for suites containing only dynamic tests 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.1 — JUnit 6.1.1 - Date: 2026-06-28 - Version: 6.1.1 - Original notes: https://github.com/junit-team/junit-framework/releases/tag/r6.1.1 - Permalink: https://whatsnew.fyi/product/junit/releases/6.1.1 - **fixed** — The Suite Engine no longer logs "No TestIdentifier with unique ID" for failing tests - **added** — 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 - **fixed** — Restore original values set by @SetSystemProperty when used with a @ParameterizedTest - **added** — JAVA_28 has been added to the JRE enum for use with JRE-based execution conditions 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.0 — JUnit 6.1.0 - Date: 2026-05-19 - Version: 6.1.0 - Original notes: https://github.com/junit-team/junit-framework/releases/tag/r6.1.0 - Permalink: https://whatsnew.fyi/product/junit/releases/6.1.0 JUnit 6.1.0 = Platform 6.1.0 + Jupiter 6.1.0 + Vintage 6.1.0 See [Release Notes](https://docs.junit.org/6.1.0/release-notes.html). ##### 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.3 — JUnit 6.0.3 - Date: 2026-02-15 - Version: 6.0.3 - Original notes: https://github.com/junit-team/junit-framework/releases/tag/r6.0.3 - Permalink: https://whatsnew.fyi/product/junit/releases/6.0.3 - **fixed** — Fix a deadlock issue in NamespacedHierarchicalStore.computeIfAbsent(N, K, Function) - **fixed** — 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 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.2 — JUnit 6.0.2 - Date: 2026-01-06 - Version: 6.0.2 - Original notes: https://github.com/junit-team/junit-framework/releases/tag/r6.0.2 - Permalink: https://whatsnew.fyi/product/junit/releases/6.0.2 - **fixed** — Make ConsoleLauncher compatible with JDK 26 by avoiding final field mutations - **fixed** — Enable recursive updates when using NamespacedHierarchicalStore.computeIfAbsent(N, K, Function) - **fixed** — Allow using @ResourceLock on classes annotated with @ClassTemplate or @ParameterizedClass - **changed** — Change API status of recommended method in ArgumentsProvider as well as ParameterDeclaration(s) as "maintained" rather than "experimental" 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.