This document contains the change log for all JUnit releases since 6.0 GA.
Please refer to the User Guide for comprehensive reference documentation for programmers writing tests, extension authors, and engine authors as well as build tool and IDE vendors.
6.1.0-M1
Date of Release: ❓
Scope: ❓
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
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.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.