Release Notes
This document contains the change log for all JUnit releases since 6.0 GA.
6.1.0-M2
Date of Release: ❓
Scope: ❓
For a complete list of all closed issues and pull requests for this release, consult the 6.1.0-M2 milestone page in the JUnit repository on GitHub.
JUnit Jupiter
New Features and Improvements
-
JAVA_27has been added to theJREenum for use withJRE-based execution conditions. -
JUnit Pioneer's
DefaultLocaleExtensionandDefaultTimeZoneExtensionare now part of the JUnit Jupiter. Find examples in the User Guide. -
Support the creation of
Argumentsfrom iterables. These additions make it easier to dynamically build arguments from collections when using@ParameterizedTest:-
Arguments.of(Iterable<?>) -
Arguments.argumentsFrom(Iterable<?>)(alias) -
Arguments.argumentSetFrom(String, Iterable<?>) -
Arguments.toList()— returns a mutableList<@Nullable Object>
-
-
Exclude competing
@Deprecatedfactory methods in fallback String-to-Object converter. -
Trim internal stack frames from
AssertionFailedErrorstack traces. -
Introduce new
trimStacktrace(Class<?>)andretainStackTraceElements(int)methods forAssertionFailureBuilder. These allow user defined assertions to trim their stacktrace.
6.1.0-M1
Date of Release: November 17, 2025
Scope:
-
New
org.junit.startmodule for usage in compact source files -
Execution mode configuration support for dynamic tests and containers
-
New parallel test executor implementation
For a complete list of all closed issues and pull requests for this release, consult the 6.1.0-M1 milestone page in the JUnit repository on GitHub.
JUnit Platform
Deprecations and Breaking Changes
-
Deprecate constructors for
ForkJoinPoolHierarchicalTestExecutorServicein favor of the newParallelHierarchicalTestExecutorServiceFactorythat also supportsWorkerThreadPoolHierarchicalTestExecutorService.
New Features and Improvements
-
Support for creating a
ModuleSelectorfrom ajava.lang.Moduleand using its classloader for test discovery. -
New
WorkerThreadPoolHierarchicalTestExecutorServiceimplementation used for parallel test execution that is backed by a regular thread pool rather than aForkJoinPool. Engine authors should switch to useParallelHierarchicalTestExecutorServiceFactoryrather than instantiating a concreteHierarchicalTestExecutorServiceimplementation for parallel execution directly. -
OpenTestReportGeneratingListenernow supports redirecting XML events to a socket via the newjunit.platform.reporting.open.xml.socketconfiguration parameter. When set to a port number, events are sent to127.0.0.1:<port>instead of being written to a file. -
Allow implementations of
HierarchicalTestEngineto specify which nodes require the global read lock by overriding theNode.isGlobalReadLockRequired()method to returnfalse.
JUnit Jupiter
New Features and Improvements
-
Introduce new module
org.junit.startfor writing and running tests. It simplifies using JUnit in compact source files together with a singlemodule importstatement. Find an example at the User Guide. -
Introduce new
dynamicTest(Consumer<? super Configuration>)factory method for dynamic tests. It allows configuring theExecutionModeof the dynamic test in addition to its display name, test source URI, and executable. -
Introduce new
dynamicContainer(Consumer<? super Configuration>)factory method for dynamic containers. It allows configuring theExecutionModeof the dynamic container and/or its children in addition to its display name, test source URI, and children. -
Enrich
assertInstanceOffailure using the test subjectThrowableas cause. It results in the stack trace of the test subjectThrowableto get reported along with the failure. -
Make implementation of
HierarchicalTestExecutorServiceused for parallel test execution configurable via the newjunit.jupiter.execution.parallel.config.executor-serviceconfiguration parameter to in order to add support forWorkerThreadPoolHierarchicalTestExecutorService. Please refer to the User Guide for details.
6.0.2
Date of Release: ❓
Scope: ❓
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.
6.0.1
Date of Release: October 31, 2025
Scope: Bug fixes and enhancements since 6.0.0
For a complete list of all closed issues and pull requests for this release, consult the 6.0.1 milestone page in the JUnit repository on GitHub.
JUnit Platform
JUnit Jupiter
Bug Fixes
-
A regression introduced in version 6.0.0 caused an exception when using
@CsvSourceor@CsvFileSourceif thedelimiterordelimiterStringattribute was set to#. This occurred because#was used as the default comment character without an option to change it. To resolve this, a newcommentCharacterattribute has been added to both annotations. Its default value remains#, but it can now be customized to avoid conflicts with other control characters. -
Fix
IllegalAccessErrorthrown when using the Kotlin-specificassertDoesNotThrowassertion. -
Stop reporting discovery issues for synthetic methods, particularly in conjunction with Kotlin suspend functions.
-
Fix support for test methods with the same signature as package-private methods declared in super classes in different packages.
Deprecations and Breaking Changes
-
The
org.junit.jupiter.migrationsupportmodule descriptor has been marked as deprecated for removal.
New Features and Improvements
-
The
@CsvSourceand@CsvFileSourceannotations now allow specifying a custom comment character using the newcommentCharacterattribute. -
Improve error message when
@ParameterizedClassis used with field injection without providing enough arguments. -
Allow calling the
TypedArgumentConverterconstructor for@Nullable Ttarget types without having to cast class literals toClass<@Nullable T>.
6.0.0
Date of Release: September 30, 2025
Scope:
-
Java 17 and Kotlin 2.1 baseline
-
Single version number for Platform, Jupiter, and Vintage
-
Use of JSpecify annotations to express nullability
-
Integration of JFR functionality in
junit-platform-launcher -
Removal of
junit-platform-runnerandjunit-platform-jfr -
Deterministic order of
@Nestedclasses -
MethodOrderer.DefaultandClassOrderer.Defaultfor@Nestedclasses -
Inheritance of
@TestMethodOrderby enclosed@Nestedclasses -
Switch to FastCSV library for
@CsvSourceand@CsvFileSource -
Support for using Kotlin
suspendfunctions as test methods -
New
--fail-fastmode for ConsoleLauncher -
Support for cancelling test execution via
CancellationToken -
Removal of various deprecated behaviors and APIs
For complete details consult the 6.0.0 Release Notes online.