Date of Release: ❓
Scope: ❓
For a complete list of all closed issues and pull requests for this release, consult the 5.10.0-M1 milestone page in the JUnit repository on GitHub.
-
Building native images with GraalVM now requires configuring the build arg
--initialize-at-build-time=org.junit.platform.launcher.core.LauncherConfig
.
-
Promote various "experimental" APIs that have matured to "stable" including
ModuleSelector
,EngineDiscoveryListener
,EngineDiscoveryRequestResolver
,LauncherSession
,LauncherSessionListener
, parallel execution support classes,@Suite
and related annotations, and others. -
All utility methods in
ReflectionSupport
that return aList
now have counterparts which return aStream
. -
For consistency with JUnit Jupiter lifecycle callbacks, listener method pairs for started/finished and opened/closed events are now invoked using "wrapping" semantics. This means that finished/closed event methods are invoked in reverse order compared to the corresponding started/opened event methods when multiple listeners are registered. This affects the following listener interfaces:
TestExecutionListener
,EngineExecutionListener
,LauncherDiscoveryListener
, andLauncherSessionListener
. -
New
LauncherInterceptor
SPI for intercepting the creation of instances ofLauncher
andLauncherSessionlistener
as well as invocations of thediscover
andexecute
methods of the former. Please refer to the User Guide for details. -
Support for limiting the
max-pool-size-factor
for parallel execution via a configuration parameter. -
The new
testfeed
details mode forConsoleLauncher
prints test execution events as they occur in a concise format.
-
The
{displayName}
placeholder of@ParameterizedTest
is no longer parsed during the evaluation of theMessageFormat
, now@DisplayName
and Kotlin method names can contain single apostrophes andMessageFormat
elements, such as{data}
.
-
The
dynamic
parallel execution strategy now allows the thread pool to be saturated by default.
-
Promote various "experimental" APIs that have matured to "stable" including
MethodOrderer
,ClassOrderer
,InvocationInterceptor
,LifecycleMethodExecutionExceptionHandler
,@TempDir
, parallel execution annotations, and others. -
@RepeatedTest
can now be configured with a failure threshold which signifies the number of failures after which remaining repetitions will be automatically skipped. See the User Guide for details. -
New
ArgumentsAccessor.getInvocationIndex()
method that supplies the index of a@ParameterizedTest
invocation. -
@EmptySource
now supports additional types, includingCollection
andMap
subtypes with a public no-arg constructor. -
DisplayNameGenerator
methods are now allowed to returnnull
, in order to signal to fall back to the default display name generator. -
New
AnnotationBasedArgumentsProvider
convenience base class which implements bothArgumentsProvider
andAnnotationConsumer
. -
New
AnnotationBasedArgumentConverter
convenience base class which implements bothArgumentConverter
andAnnotationConsumer
. -
New
junit.jupiter.execution.parallel.config.dynamic.max-pool-size-factor
configuration parameter to set the maximum pool size factor. -
New
junit.jupiter.execution.parallel.config.dynamic.saturate
configuration parameter to disable pool saturation.