Description
Motivation
Java 8 is the current baseline of JUnit 5. It was released over 10 years ago and recent versions of Java have introduced many enhancements that make moving to a more recent JDK as the baseline for JUnit alluring. Moreover, there is movement in the ecosystem regarding this issue. For example, Spring has changed their baseline to JDK 17+ with 6.x and free support for 5.x will end in 2024. Similarly, AssertJ will move to Java 17. Therefore, we should consider making a similar move. Doing so would mean bumping the major version number and would allow us to clean up and simplify a number of things. This issue serves as a starting point for collecting those topics and tasks. For users stuck on Java 8 we will extend support for the last 5.x release for at least a year and backport security and important bug fixes to 5.x.
Todos
- Bump JDK baseline to 17 #4249
- Remove deprecated code
- Clean up
ConsoleLauncher
CLI (remove single-dash long options and mode without subcommand) - Look for issues labeled with
type: breaking change
and decide whether they can be addressed in 6.0 - Remove some if not all multi-release JAR code
- Remove separate build task for compiling module descriptors
- Remove any flags that turn on "backward compatibility mode" (e.g.
junit.platform.reflection.search.useLegacySemantics
) and potentially log a warning if they're used - Remove
@TempDir
per context mode? - Support
AutoCloseable
instead ofCloseableResource
inStore
? - Change default behavior for
TestInstancePostProcessor
and similar extensions wrt. method-levelExtensionContext
? - Adopt new logo (contest?) to remove "5"
- Rename GitHub repo to remove "5"
- Bump Kotlin language version to latest stable
- Discontinue
junit-platform-jfr
and move listeners tojunit-platform-launcher
- Remove
ReflectionUtils.isRecord*
methods and replace with calls toClass.isRecord()
- Use
List.of
etc. instead ofCollections.emptyList
etc. - Deprecate
fail()
,assertTrue(boolean)
,assertFalse(boolean)
, and similar assertions that do not produce adequate error messages - Add nullability annotations to public API (use jspecify)
- Replace reflection in
JRE.determineCurrentVersion()
- Resolve
TODO [#4246]
comments within the code base