Skip to content

Commit

Permalink
Prepare 5.9 release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
marcphilipp committed Jul 26, 2022
1 parent 2aaf24c commit d3f8e4a
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 200 deletions.

This file was deleted.

This file was deleted.

118 changes: 102 additions & 16 deletions documentation/src/docs/asciidoc/release-notes/release-notes-5.9.0.adoc
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
[[release-notes-5.9.0]]
== 5.9.0

*Date of Release:*
*Date of Release:* July 26, 2022

*Scope:* ❓
*Scope:*

* XML reports in new https://github.com/ota4j-team/open-test-reporting[Open Test Reporting]
format
* Configurable cleanup mode for `@TempDir`
* Configurable thread mode for `@Timeout`
* Conditional execution based on OS architectures
* New `TestInstancePreConstructCallback` extension API
* Reusable parameter resolution for custom extension methods via `ExecutableInvoker`
* Parameter injection for `@MethodSource` methods
* New `IterationSelector`
* Various improvements to `ConsoleLauncher`

For a complete list of all _closed_ issues and pull requests for this release, consult the
link:{junit5-repo}+/milestone/62?closed=1+[5.9.0] milestone page in the JUnit repository on
Expand All @@ -15,46 +26,121 @@ GitHub.

==== Bug Fixes

* ❓
* Fixed handling of global post-discovery filters that apply to `@Suite` classes.
* Since the Turkish language has special characters such as 'ı' and 'İ', the uppercase
conversion in `DefaultParallelExecutionConfigurationStrategy#getStrategy` previously
caused all tests to finish with exit code -1. This has been fixed by using the root
locale instead of the default one.
* Absolute path entries are now supported in JUnit's Platform Console Launcher on Windows.
* Attempts to load a `Class` for an invalid class name representing an extremely large
multidimensional array now fail within a reasonable amount of time.
* Fix concurrency issue in classpath scanning.

==== Deprecations and Breaking Changes

* ❓
* `ConfigurationParameters.size()` has been deprecated in favor of the new `keySet()`
method.

==== New Features and Improvements

* ❓
* Support for the https://github.com/ota4j-team/open-test-reporting[Open Test Reporting]
format which supports all features of the JUnit Platform such as hierarchical test
structures, display names, tags, etc. Please refer to the
<<../user-guide/index.adoc#junit-platform-reporting-open-test-reporting, User Guide>>
for instructions on how to enable such reports in your build.
* `ConfigurationParameters` has a new `keySet()` method which allows you to retrieve all
configuration parameter keys.
* New `IterationSelector` for selecting a subset of a test's or container's iterations.
* `ParallelExecutionConfiguration` allows configuring the `saturate` predicate of the
`ForkJoinPool` used for parallel test execution.
* JUnit OSGi bundles now contain `engine` and `launcher` requirements ensuring that at
resolution time a fully running set of dependencies is calculated, avoiding the need for
these to be manually specified.
* JUnit Platform Standalone Console JAR now also includes the JUnit Platform Suite Engine.
* New `failIfNoTests` attribute added to `@Suite`. This will fail the suite if no tests
are discovered.
* The output color for the `ConsoleLauncher` can now be customized. The option
`--single-color` will apply a built-in monochrome style, while `--color-palette` will
accept a properties file. See the
<<../user-guide/index.adoc#running-tests-console-launcher-color-customization,
User Guide>> for details.
* The default theme for the `ConsoleLauncher` is now determined by the charset reported by
the system console on Java 17 and later.
* New `--list-engines` option added to the `ConsoleLauncher` which displays all registered
test engine implementations.
* Configuring included `EngineFilters` that do not match any registered `TestEngine`
results in an error to avoid misconfiguration – for example, due to typos.
* New public factory method to instantiate an `ExecutionRequest`.
* Documentation for overriding the JUnit version used in Spring Boot applications. See the
<<../user-guide/index.adoc#running-tests-build-spring-boot, User Guide>> for details.


[[release-notes-5.9.0-junit-jupiter]]
=== JUnit Jupiter

==== Bug Fixes

* ❓
* When cleaning up a `@TempDir`, only one retry attempt will be made to delete directories.
* Since the Turkish language has special characters such as 'ı' and 'İ', the uppercase
conversion in `DefaultParallelExecutionConfigurationStrategy#getStrategy` previously
caused all tests to finish with exit code -1. This has been fixed by using the root
locale instead of the default one.

==== Deprecations and Breaking Changes

* ❓
* `@TempDir` fields are no longer allowed to be declared as `final`.
- This improves diagnostics for failures resulting from a user-declared `static final`
`@TempDir` field by throwing an exception with an informative error message.
* Private lifecycle methods (annotated with `@BeforeAll`, `@AfterAll`, `@BeforeEach`, or
`@AfterEach`) now correctly lead to an exception. Although this is a bug fix, it is
technically also a breaking change since there might be existing user code with
`private` lifecycle methods which will now start to fail.

==== New Features and Improvements

* `@TempDir` now includes a `cleanup` mode attribute for preventing a temporary directory
from being deleted after a test. The default cleanup mode can be configured via a
configuration parameter.
* Support for FreeBSD and OpenBSD operating systems in `@EnabledOnOs` and `@DisabledOnOs`.
* New `MATCH_NONE` mode for `@EnumSource` that selects only those enum constants whose
names match none of the supplied patterns.
* The `@Order` annotation is now a `STABLE` API.
* New `TestInstancePreConstructCallback` extension API that is called prior to test
instance construction – symmetric to the existing `TestInstancePreDestroyCallback`
extension API.
* Extensions can now leverage registered `ParameterResolver` extensions when invoking
methods and constructors via the new `ExecutableInvoker` API available in the
`ExtensionContext`.
* A subset of the invocations of parameterized or dynamic tests can now be selected via
the new `IterationSelector` discovery selector when launching the JUnit Platform.
* `JAVA_19` and `JAVA_20` have been added to the `JRE` enum for use with JRE-based
execution conditions.
* `@MethodSource` factory methods can now accept arguments resolved by registered
`ParameterResolver` extensions.
* `AssertionFailureBuilder` allows reusing Jupiter's logic for creating failure messages
to assist in writing custom assertion methods.
* Three new `abort` methods have been added to the `Assumptions` class. These are
analogous to the `fail` methods in the `Assertions` class, but instead of failing they
abort the test or container.
* Support for enabling/disabling tests based on the system's hardware architecture via new
`architectures` attributes in `@EnabledOnOs` and `@DisabledOnOs`.
* Default `@MethodSource` factory methods can now accept arguments. A _default_ factory
method is a method declared in the test class with the same name as the
`@ParameterizedTest` method that is inferred as the factory method when no explicit
factory method is specified in the `@MethodSource` annotation.
* Thread mode can be set on `@Timeout` annotation. It allows to configure whether test
code is executed in the thread of the calling code or in a separate thread. The three
modes are: `INFERRED` (default) which resolves the thread mode configured via the
property `junit.jupiter.execution.timeout.thread.mode.default`, `SAME_THREAD` that
executes the test code in the same thread as the calling code, and `SEPARATE_THREAD`
which executes it in a separate thread.


[[release-notes-5.9.0-junit-vintage]]
=== JUnit Vintage

==== Bug Fixes

* ❓

==== Deprecations and Breaking Changes

* ❓

==== New Features and Improvements

* More accurate reporting of intermediate start/finish events, e.g. iterations of the
`Parameterized` runner and classes executed indirectly via the `Suite` runner.
`Parameterized` runner and classes executed indirectly via the `Suite` runner, when
running with JUnit 4.13 or later.

0 comments on commit d3f8e4a

Please sign in to comment.