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

Bug Fixes

Deprecations and Breaking Changes

New Features and Improvements

  • Support for creating a ModuleSelector from a java.lang.Module and using its classloader for test discovery.

JUnit Jupiter

Bug Fixes

Deprecations and Breaking Changes

New Features and Improvements

  • Introduce new dynamicTest(Consumer<? super Configuration>) factory method for dynamic tests. It allows configuring the ExecutionMode of 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 the ExecutionMode of the dynamic container and/or its children in addition to its display name, test source URI, and children.

  • Enrich assertInstanceOf failure using the test subject Throwable as cause. It results in the stack trace of the test subject Throwable to get reported along with the failure.

JUnit Vintage

Bug Fixes

Deprecations and Breaking Changes

New Features and Improvements

6.0.1

Date of Release:

Scope:

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

Bug Fixes

Deprecations and Breaking Changes

New Features and Improvements

JUnit Jupiter

Bug Fixes

  • A regression introduced in version 6.0.0 caused an exception when using @CsvSource or @CsvFileSource if the delimiter or delimiterString attribute was set to #. This occurred because # was used as the default comment character without an option to change it. To resolve this, a new commentCharacter attribute has been added to both annotations. Its default value remains #, but it can now be customized to avoid conflicts with other control characters.

Deprecations and Breaking Changes

New Features and Improvements

  • The @CsvSource and @CsvFileSource annotations now allow specifying a custom comment character using the new commentCharacter attribute.

JUnit Vintage

Bug Fixes

Deprecations and Breaking Changes

New Features and Improvements

  • Allow disabling the reporting of discovery issues by the JUnit Vintage engine (including the one reported for its deprecation) by setting the new junit.vintage.discovery.issue.reporting.enabled configuration parameter to false.

6.0.0

Date of Release: September 30, 2025

Scope:

  • Java 17 and Kotlin 2.2 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-runner and junit-platform-jfr

  • Deterministic order of @Nested classes

  • MethodOrderer.Default and ClassOrderer.Default for @Nested classes

  • Inheritance of @TestMethodOrder by enclosed @Nested classes

  • Switch to FastCSV library for @CsvSource and @CsvFileSource

  • Support for using Kotlin suspend functions as test methods

  • New --fail-fast mode 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.