org.junit.jupiter:junit-jupiter-api
6.1.3
#661 most downloaded on Maven Central
junit-team/junit-framework
What this package is like to depend on
Last release 16 days ago
08 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Rarely documented
notes for 11 of 62 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
113 releases · first in 2016
17 releases in the last 12 months
see the full history below
Release timeline
113 releases · Jul 2016 to Aug 2026Releases
latest 60 of 113-
6.1.308 Aug 2026Release notes
Open source →JUnit 6.1.3 = Platform 6.1.3 + Jupiter 6.1.3 + Vintage 6.1.3
See Release Notes.
Full Changelog: r6.1.2...r6.1.3
Release notes
Open source →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.212 Jul 2026Release notes
Open source →JUnit 6.1.2 = Platform 6.1.2 + Jupiter 6.1.2 + Vintage 6.1.2
See Release Notes.
Full Changelog: r6.1.1...r6.1.2
Release notes
Open source →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.128 Jun 2026Release notes
Open source →JUnit 6.1.1 = Platform 6.1.1 + Jupiter 6.1.1 + Vintage 6.1.1
See Release Notes.
Full Changelog: r6.1.0...r6.1.1
Release notes
Open source →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.019 May 2026Release notes
Open source →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 #5633
- @Maran23 made their first contribution in #5644
Full Changelog: r6.0.3...r6.1.0
Release notes
Open source →Date of Release: May 19, 2026
Scope:
New @DefaultLocale and @DefaultTimeZone built-in extensions
New built-in extension for clearing/setting/restoring system properties
Configurable deletion strategy for @TempDir that allows ignoring failures
New org.junit.start module for usage in compact source files
Execution mode configuration support for dynamic tests and containers
Improved stack trace pruning for assertion failures
New org.junit.jupiter.api.Constants class for referencing configuration parameters
Improvements to legacy XML reports for parameterized test classes
New parallel test executor implementation
New experimental memory cleanup mode for large test suites
For a complete list of all closed issues and pull requests for this release, consult the 6.1.0-M1 , 6.1.0-RC1 , and 6.1.0 milestone pages in the JUnit repository on GitHub.
JUnit Platform
Bug Fixes
A deadlock issue in NamespacedHierarchicalStore.computeIfAbsent(N, K, Function) has been fixed.
WorkerThreadPoolHierarchicalTestExecutorService now rechecks the done condition before rejecting an extraneous worker.
Missing precondition checks have been added to Launcher implementations.
Failures to resolve selectors are now propagated by the Suite Engine.
AbstractTestDescriptor.getChildren() now returns immutable set of children rather than a merely unmodifiable set.
Deprecations and Breaking Changes
Deprecate constructors for ForkJoinPoolHierarchicalTestExecutorService in favor of the new ParallelHierarchicalTestExecutorServiceFactory that also supports WorkerThreadPoolHierarchicalTestExecutorService .
In the EngineTestKit , Executions.started() has been deprecated in favor of Executions.finished() , since started executions are always finished.
New Features and Improvements
Support for creating a ModuleSelector from a java.lang.Module and using its classloader for test discovery.
New selectClasspathResources(String…) and selectClasspathResources(List<String) methods in DiscoverySelectors .
OpenTestReportGeneratingListener now supports redirecting XML events to a socket via the new junit.platform.reporting.open.xml.socket configuration parameter. When set to a port number, events are sent to 127.0.0.1:<port> instead of being written to a file.
New WorkerThreadPoolHierarchicalTestExecutorService implementation used for parallel test execution that is backed by a regular thread pool rather than a ForkJoinPool . Engine authors should switch to use ParallelHierarchicalTestExecutorServiceFactory rather than instantiating a concrete HierarchicalTestExecutorService implementation for parallel execution directly.
New experimental memory cleanup mode that is useful when executing a large number of tests. It can be enabled via the new junit.platform.execution.memory.cleanup.enabled configuration parameter.
Allow implementations of HierarchicalTestEngine to specify which nodes require the global read lock by overriding the Node.isGlobalReadLockRequired() method to return false .
TestDescriptor implementation requirements have now been clarified in the corresponding Javadoc.
The UniqueId.uniqueIdFormat field has been removed, reducing the size of UniqueId objects.
JUnit Jupiter
Bug Fixes
Recursive updates are now supported when using computeIfAbsent(K, Function, Class) in the ExtensionContext.Store , providing parity with the deprecated getOrComputeIfAbsent(K, Function, Class) method.
Legacy XML reports now include the index of @ClassTemplate / @ParameterizedClass invocations in test names to make them unique.
Legacy XML reports now include parent display names to make it easier to distinguish between invocations for different parameters.
Deprecations and Breaking Changes
The OTHER constant of JRE has been deprecated in favor of the int / int[] annotation attributes of @EnabledOnJre , @DisabledOnJre , @EnabledForJreRange , and @DisabledForJreRange which allow referencing JRE versions later than those supported by the JRE enum.
The org.junit.jupiter.engine.Constants class and its constants are now deprecated in favor of org.junit.jupiter.api.Constants .
New Features and Improvements
JUnit Pioneer 's DefaultLocaleExtension and DefaultTimeZoneExtension are now part of JUnit Jupiter. Find examples in the User Guide .
JUnit Pioneer’s SystemPropertyExtension is now part of JUnit Jupiter. Find examples in the User Guide . For details regarding implementation differences between JUnit Pioneer and Jupiter, see the corresponding pull request .
@TempDir now allows configuring a deletion strategy for temporary directories. This is typically used to gain control over what happens when deletion of a file or directory fails (see User Guide for details).
JAVA_27 has been added to the JRE enum for use with JRE -based execution conditions.
Introduce new module org.junit.start for writing and running tests. It simplifies using JUnit in compact source files together with a single module import statement. Find an example at the User Guide .
Arguments may now be created from instances of Iterable via the following new methods which make it easier to dynamically build arguments from collections when using @ParameterizedTest .
Arguments.of(Iterable<?>)
Arguments.argumentsFrom(Iterable<?>) (alias for of(Iterable<?>) )
Arguments.argumentSetFrom(String, Iterable<?>)
Arguments.toList() — returns a mutable List<@Nullable Object>
@EmptySource now supports Iterable , Iterator , and ListIterator .
@Deprecated factory methods are now excluded in the fallback String-to-Object conversion algorithm.
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.
Make implementation of HierarchicalTestExecutorService used for parallel test execution configurable via the new junit.jupiter.execution.parallel.config.executor-service configuration parameter to in order to add support for WorkerThreadPoolHierarchicalTestExecutorService . Please refer to the User Guide for details.
Internal stack frames are now removed from AssertionFailedError stack traces.
New trimStacktrace(Class<?>) and retainStackTraceElements(int) methods in AssertionFailureBuilder which allow user-defined assertions to trim their stack traces.
Generic inline value classes (such as kotlin.Result<T> ) can now be used as parameters in @ParameterizedTest methods when kotlin-reflect is on the classpath. Note, however, that primitive-wrapper inline value classes (such as UInt or custom value classes wrapping primitives) are not yet supported.
Kotlin-specific assertions now include a variant of assertThrowsExactly with reified generics.
The new org.junit.jupiter.api.Constants class provides constants for Configuration Parameters specific to the Jupiter engine.
The @EmptySource annotation now provides a type attribute that allows configuring the type of the empty argument explicitly. This is intended to be used in conjunction with an ArgumentConverter that supports the specified type.
JUnit Vintage
No changes.
-
6.1.0-RC125 Apr 2026 pre-releaseRelease notes
Open source →JUnit 6.1.0-RC1 = Platform 6.1.0-RC1 + Jupiter 6.1.0-RC1 + Vintage 6.1.0-RC1
See Release Notes.
New Contributors
- @mariokhoury4 made their first contribution in #4574
- @Ogu1208 made their first contribution in #5145
- @HyungGeun94 made their first contribution in #5271
- @yalishevant made their first contribution in #5316
- @JINU-CHANG made their first contribution in #5290
- @jaschdoc made their first contribution in #5427
- @kawshikbuet17 made their first contribution in #5561
- @msridhar made their first contribution in #5602
Full Changelog: r6.1.0-M1...r6.1.0-RC1
-
6.1.0-M117 Nov 2025 pre-releaseNothing published for this version
-
6.0.315 Feb 2026Release notes
Open source →JUnit 6.0.3 = Platform 6.0.3 + Jupiter 6.0.3 + Vintage 6.0.3
See Release Notes.
Full Changelog: r6.0.2...r6.0.3
Release notes
Open source →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.206 Jan 2026Release notes
Open source →JUnit 6.0.2 = Platform 6.0.2 + Jupiter 6.0.2 + Vintage 6.0.2
See Release Notes.
Full Changelog: r6.0.1...r6.0.2
Release notes
Open source →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.
-
6.0.131 Oct 2025Release notes
Open source →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
Bug Fixes
The jdk.jfr package is now an optional import when using the junit-platform-launcher as an OSGi bundle.
New Features and Improvements
Legacy documentation regarding Java 8 compatibility has been removed from the User Guide.
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.
Fix IllegalAccessError thrown when using the Kotlin-specific assertDoesNotThrow assertion.
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.migrationsupport module descriptor has been marked as deprecated for removal.
New Features and Improvements
The @CsvSource and @CsvFileSource annotations now allow specifying a custom comment character using the new commentCharacter attribute.
Improve error message when @ParameterizedClass is used with field injection without providing enough arguments.
Allow calling the TypedArgumentConverter constructor for @Nullable T target types without having to cast class literals to Class<@Nullable T> .
JUnit Vintage
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.030 Sep 2025Release notes
Open source →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-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.
-
6.0.0-RC314 Sep 2025 pre-releaseNothing published for this version
-
6.0.0-RC225 Aug 2025 pre-releaseNothing published for this version
-
6.0.0-RC120 Aug 2025 pre-releaseNothing published for this version
-
6.0.0-M222 Jul 2025 pre-releaseNothing published for this version
-
6.0.0-M127 Jun 2025 pre-releaseNothing published for this version
-
5.14.426 Apr 2026Release notes
Open source →JUnit 5.14.4 = Platform 1.14.4 + Jupiter 5.14.4 + Vintage 5.14.4
See Release Notes.
Full Changelog: r5.14.3...r5.14.4
-
5.14.315 Feb 2026Release notes
Open source →JUnit 5.14.3 = Platform 1.14.3 + Jupiter 5.14.3 + Vintage 5.14.3
See Release Notes.
Full Changelog: r5.14.2...r5.14.3
-
5.14.206 Jan 2026Release notes
Open source →JUnit 5.14.2 = Platform 1.14.2 + Jupiter 5.14.2 + Vintage 5.14.2
See Release Notes.
New Contributors
Full Changelog: r5.14.1...r5.14.2
-
5.14.131 Oct 2025Nothing published for this version
-
5.14.030 Sep 2025Nothing published for this version
-
5.14.0-RC123 Sep 2025 pre-releaseNothing published for this version
-
5.13.421 Jul 2025Nothing published for this version
-
5.13.304 Jul 2025Nothing published for this version
-
5.13.224 Jun 2025Nothing published for this version
-
5.13.107 Jun 2025Nothing published for this version
-
5.13.030 May 2025Nothing published for this version
-
5.13.0-RC116 May 2025 pre-releaseNothing published for this version
-
5.13.0-M302 May 2025 pre-releaseNothing published for this version
-
5.13.0-M224 Mar 2025 pre-releaseNothing published for this version
-
5.13.0-M121 Mar 2025 pre-releaseNothing published for this version
-
5.12.211 Apr 2025Nothing published for this version
-
5.12.114 Mar 2025Nothing published for this version
-
5.12.021 Feb 2025Nothing published for this version
-
5.12.0-RC212 Feb 2025 pre-releaseNothing published for this version
-
5.12.0-RC107 Feb 2025 pre-releaseNothing published for this version
-
5.12.0-M131 Jan 2025 pre-releaseNothing published for this version
-
5.11.416 Dec 2024Nothing published for this version
-
5.11.321 Oct 2024Nothing published for this version
-
5.11.204 Oct 2024Nothing published for this version
-
5.11.125 Sep 2024Nothing published for this version
-
5.11.014 Aug 2024Nothing published for this version
-
5.11.0-RC131 Jul 2024 pre-releaseNothing published for this version
-
5.11.0-M217 May 2024 pre-releaseNothing published for this version
-
5.11.0-M123 Apr 2024 pre-releaseNothing published for this version
-
5.10.504 Oct 2024Nothing published for this version
-
5.10.424 Sep 2024Nothing published for this version
-
5.10.327 Jun 2024Nothing published for this version
-
5.10.204 Feb 2024Nothing published for this version
-
5.10.105 Nov 2023Nothing published for this version
-
5.10.023 Jul 2023Nothing published for this version
-
5.10.0-RC219 Jul 2023 pre-releaseNothing published for this version
-
5.10.0-RC106 Jul 2023 pre-releaseNothing published for this version
-
5.10.0-M113 May 2023 pre-releaseNothing published for this version
-
5.9.326 Apr 2023Nothing published for this version
-
5.9.210 Jan 2023Nothing published for this version
-
5.9.120 Sep 2022Nothing published for this version
-
5.9.026 Jul 2022Nothing published for this version
-
5.9.0-RC104 Jul 2022 pre-releaseNothing published for this version
-
5.9.0-M115 May 2022 pre-releaseNothing published for this version
-
5.8.228 Nov 2021Nothing published for this version