<commit_before>[[release-notes-5.5.0-RC1]]
== 5.5.0-RC1

*Date of Release:* ❓

*Scope:* ❓

For a complete list of all _closed_ issues and pull requests for this release, consult the
link:{junit5-repo}+/milestone/37?closed=1+[5.5 RC1] milestone page in the JUnit repository
on GitHub.


[[release-notes-5.5.0-RC1-junit-platform]]
=== JUnit Platform

==== Bug Fixes

* A custom `ClassLoader` created for additional `--class-path` entries passed to the
  `ConsoleLauncher` will now be closed after usage to gracefully free file handles.

==== Deprecations and Breaking Changes

* The internal `PreconditionViolationException` class in concealed package
  `org.junit.platform.commons.util` is now deprecated and has been replaced by an
  exception class with the same name in exported package `org.junit.platform.commons`.

==== New Features and Improvements

* `AnnotationSupport.findRepeatableAnnotations()` now finds repeatable annotations used as
  meta-annotations on other repeatable annotations.
* New `AnnotationSupport.findRepeatableAnnotations()` variant that accepts a
  `java.util.Optional<? extends AnnotatedElement>` argument.
* Exceptions thrown by `TestExecutionListeners` no longer cause test execution to abort.
  Instead, they will be logged as warnings now.
* New `MethodSource.from()` variant that accepts `String, String, Class<?>...` as
  arguments.


[[release-notes-5.5.0-RC1-junit-jupiter]]
=== JUnit Jupiter

==== Bug Fixes

* Execution of dynamic tests registered via a `@TestFactory` method no longer results in
  an `OutOfMemoryError` if the executables in the dynamic tests retain references to
  objects consuming large amounts of memory. Technically speaking, JUnit Jupiter no longer
  retains references to instances of `DynamicTest` after they have been executed.

==== Deprecations and Breaking Changes

* Script-based condition APIs and their supporting implementations are deprecated with
  the intent to remove them in JUnit Jupiter 5.6. Users should instead rely on a
  combination of other built-in conditions or create and use a custom implementation of
  `ExecutionCondition` to evaluate the same conditions.

==== New Features and Improvements

* Support for declarative timeouts using `@Timeout` or configuration parameters (see
  <<../user-guide/index.adoc#writing-tests-declarative-timeouts, User Guide>> for details)
* New overloaded variants of `Assertions.assertLinesMatch(...)` that accept a `String` or
  a `Supplier<String>` for a custom failure message.
* Failure messages for `Assertions.assertLinesMatch(...)` now emit each expected and
  actual line in a dedicated line.
* New Kotlin friendly `assertDoesNotThrow`, `assertTimeout`, and `assertTimeoutPreemptively`
  assertions have been added as top-level functions in the `org.junit.jupiter.api` package.
* New `emptyValue` attribute in `@CsvSource` and `@CsvFileSource`.
* Display names for test methods generated by the `ReplaceUnderscores`
  `DisplayNameGenerator` no longer include empty parentheses for test methods that do not
  declare any parameters.
* New `junit.jupiter.displayname.generator.default` configuration parameter to set the
  default `DisplayNameGenerator` that will be used unless `@DisplayName` or
  `@DisplayNameGeneration` is present.
* `MethodOrderer.Random` now generates a default random seed only once and prints it to
  the log in order to allow reproducible builds.
* Methods ordered with `MethodOrderer.Random` now execute using the `SAME_THREAD`
  concurrency mode instead of the `CONCURRENT` mode when no custom seed is provided.
* The declared field type for an extension registered via `@RegisterExtension` is no
  longer required to implement an `Extension` API. It is now sufficient if the extension
  implementation can be assigned to the declared field type. This provides extension
  authors greater flexibility as well as the ability to hide implementation details of the
  user facing extension API.
* All methods in the `TestWatcher` API are now interface `default` methods with empty
  implementations.
* New `InvocationInterceptor` extension API (see
  <<../user-guide/index.adoc#extensions-intercepting-invocations, User Guide>> for
  details).
* A custom test source for a `DynamicContainer` or `DynamicTest` may now be a method URI
  -- for example, `method:org.example.MyTestClass#myTestMethod()`.
* New `junit.jupiter.execution.parallel.mode.classes.default` configuration parameter
  allows to run top-level classes in parallel but their methods sequentially or vice versa
  (see <<../user-guide/index.adoc#writing-tests-parallel-execution, User Guide>> for
  details).


[[release-notes-5.5.0-RC1-junit-vintage]]
=== JUnit Vintage

==== New Features and Improvements

* `junit:junit` is now a compile-scoped dependency of `junit-vintage-engine` to allow for
  easier dependency management in Maven POMs.
* A method that is `public` is now preferred over other methods with the same name in the
  same test class when creating a `MethodSource` for a JUnit 4 `Description`.
<commit_msg>Document #1912 in the Release Notes<commit_after>[[release-notes-5.5.0-RC1]]
== 5.5.0-RC1

*Date of Release:* ❓

*Scope:* ❓

For a complete list of all _closed_ issues and pull requests for this release, consult the
link:{junit5-repo}+/milestone/37?closed=1+[5.5 RC1] milestone page in the JUnit repository
on GitHub.


[[release-notes-5.5.0-RC1-junit-platform]]
=== JUnit Platform

==== Bug Fixes

* A custom `ClassLoader` created for additional `--class-path` entries passed to the
  `ConsoleLauncher` will now be closed after usage to gracefully free file handles.

==== Deprecations and Breaking Changes

* The internal `PreconditionViolationException` class in concealed package
  `org.junit.platform.commons.util` is now deprecated and has been replaced by an
  exception class with the same name in exported package `org.junit.platform.commons`.

==== New Features and Improvements

* `AnnotationSupport.findRepeatableAnnotations()` now finds repeatable annotations used as
  meta-annotations on other repeatable annotations.
* New `AnnotationSupport.findRepeatableAnnotations()` variant that accepts a
  `java.util.Optional<? extends AnnotatedElement>` argument.
* Exceptions thrown by `TestExecutionListeners` no longer cause test execution to abort.
  Instead, they will be logged as warnings now.
* New `MethodSource.from()` variant that accepts `String, String, Class<?>...` as
  arguments.


[[release-notes-5.5.0-RC1-junit-jupiter]]
=== JUnit Jupiter

==== Bug Fixes

* Execution of dynamic tests registered via a `@TestFactory` method no longer results in
  an `OutOfMemoryError` if the executables in the dynamic tests retain references to
  objects consuming large amounts of memory. Technically speaking, JUnit Jupiter no longer
  retains references to instances of `DynamicTest` after they have been executed.

==== Deprecations and Breaking Changes

* Script-based condition APIs and their supporting implementations are deprecated with
  the intent to remove them in JUnit Jupiter 5.6. Users should instead rely on a
  combination of other built-in conditions or create and use a custom implementation of
  `ExecutionCondition` to evaluate the same conditions.

==== New Features and Improvements

* Support for declarative timeouts using `@Timeout` or configuration parameters (see
  <<../user-guide/index.adoc#writing-tests-declarative-timeouts, User Guide>> for details)
* New overloaded variants of `Assertions.assertLinesMatch(...)` that accept a `String` or
  a `Supplier<String>` for a custom failure message.
* Failure messages for `Assertions.assertLinesMatch(...)` now emit each expected and
  actual line in a dedicated line.
* New Kotlin friendly `assertDoesNotThrow`, `assertTimeout`, and `assertTimeoutPreemptively`
  assertions have been added as top-level functions in the `org.junit.jupiter.api` package.
* New `emptyValue` attribute in `@CsvSource` and `@CsvFileSource`.
* Display names for test methods generated by the `ReplaceUnderscores`
  `DisplayNameGenerator` no longer include empty parentheses for test methods that do not
  declare any parameters.
* New `junit.jupiter.displayname.generator.default` configuration parameter to set the
  default `DisplayNameGenerator` that will be used unless `@DisplayName` or
  `@DisplayNameGeneration` is present.
* `MethodOrderer.Random` now generates a default random seed only once and prints it to
  the log in order to allow reproducible builds.
* Methods ordered with `MethodOrderer.Random` now execute using the `SAME_THREAD`
  concurrency mode instead of the `CONCURRENT` mode when no custom seed is provided.
* The declared field type for an extension registered via `@RegisterExtension` is no
  longer required to implement an `Extension` API. It is now sufficient if the extension
  implementation can be assigned to the declared field type. This provides extension
  authors greater flexibility as well as the ability to hide implementation details of the
  user facing extension API.
* Private fields annotated with `@RegisterExtension` are no longer silently ignored.
  Instead the corresponding test class or test method will now fail with an exception
  informing the user of the configuration error.
* All methods in the `TestWatcher` API are now interface `default` methods with empty
  implementations.
* New `InvocationInterceptor` extension API (see
  <<../user-guide/index.adoc#extensions-intercepting-invocations, User Guide>> for
  details).
* A custom test source for a `DynamicContainer` or `DynamicTest` may now be a method URI
  -- for example, `method:org.example.MyTestClass#myTestMethod()`.
* New `junit.jupiter.execution.parallel.mode.classes.default` configuration parameter
  allows to run top-level classes in parallel but their methods sequentially or vice versa
  (see <<../user-guide/index.adoc#writing-tests-parallel-execution, User Guide>> for
  details).


[[release-notes-5.5.0-RC1-junit-vintage]]
=== JUnit Vintage

==== New Features and Improvements

* `junit:junit` is now a compile-scoped dependency of `junit-vintage-engine` to allow for
  easier dependency management in Maven POMs.
* A method that is `public` is now preferred over other methods with the same name in the
  same test class when creating a `MethodSource` for a JUnit 4 `Description`.

{'fraction_non_alphanumeric': 0.07950803796242495, 'fraction_numerical': 0.006197946930079411, 'mean_word_length': 4.860953461975028, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7662293', 'n_tokens_mistral': 2758, 'n_tokens_neox': 2661, 'n_words': 1208}