|
15 | 15 | * GraalVM: removal of `native-image.properties` files from JARs |
16 | 16 | * Bug fixes and other minor improvements |
17 | 17 |
|
18 | | -For a complete list of all _closed_ issues and pull requests for this release, consult the |
19 | | -link:{junit-framework-repo}+/milestone/85?closed=1+[5.13.0-M1], |
20 | | -link:{junit-framework-repo}+/milestone/92?closed=1+[5.13.0-M2], |
21 | | -link:{junit-framework-repo}+/milestone/93?closed=1+[5.13.0-M3], |
22 | | -link:{junit-framework-repo}+/milestone/96?closed=1+[5.13.0-RC1], |
23 | | -and link:{junit-framework-repo}+/milestone/94?closed=1+[5.13.0] milestone pages in the |
24 | | -JUnit repository on GitHub. |
25 | | - |
26 | | - |
27 | | -[[release-notes-5.13.0-overall-improvements]] |
28 | | -=== Overall Changes |
29 | | - |
30 | | -[[release-notes-5.13.0-overall-new-features-and-improvements]] |
31 | | -==== Deprecations and Breaking Changes |
32 | | - |
33 | | -* The JUnit feature in GraalVM Native Build Tools (NBT) has been rewritten to no longer |
34 | | - require JUnit classes to be initialized at build time when running on JDK 22 and later. |
35 | | - Therefore, JUnit's JARs no longer ship with `native-image.properties` files that contain |
36 | | - `--initialize-at-build-time` options (introduced in 5.12.0). Please update to the most |
37 | | - recent version of GraalVM Native Build Tools prior to upgrading to this version of |
38 | | - JUnit. Please refer to the |
39 | | - https://github.com/junit-team/junit-framework/wiki/Upgrading-to-JUnit-5.13[Upgrade Instructions] |
40 | | - in the wiki for details if you're on NBT 0.10.x or earlier. |
41 | | - |
42 | | - |
43 | | -[[release-notes-5.13.0-junit-platform]] |
44 | | -=== JUnit Platform |
45 | | - |
46 | | -[[release-notes-5.13.0-junit-platform-bug-fixes]] |
47 | | -==== Bug Fixes |
48 | | - |
49 | | -* Notify `LauncherDiscoveryListener` implementation registered via `LaucherConfig` or on |
50 | | - the `Launcher` of `selectorProcessed` events. |
51 | | -* Reintroduce support for JVM shutdown hooks when using the `-cp`/`--classpath` option of |
52 | | - the `ConsoleLauncher`. Prior to this release, the created class loader was closed prior |
53 | | - to JVM shutdown hooks being invoked, which caused hooks to fail with a |
54 | | - `ClassNotFoundException` when loading classes during shutdown. |
55 | | -* Fix support of `--uid` and `--select-unique-id` options in the console launcher. |
56 | | - |
57 | | -[[release-notes-5.13.0-junit-platform-new-features-and-improvements]] |
58 | | -==== New Features and Improvements |
59 | | - |
60 | | -* Introduce a mechanism for `TestEngine` implementations to report issues encountered |
61 | | - during test discovery. If an engine reports a `DiscoveryIssue` with a `Severity` equal |
62 | | - to or higher than a configurable critical severity, its tests will not be executed. |
63 | | - Instead, the engine will be reported as failed during execution with a failure message |
64 | | - listing all critical issues. Non-critical issues will be logged but will not prevent the |
65 | | - engine from executing its tests. The critical severity can be configured via a new |
66 | | - configuration parameter and, currently, defaults to `ERROR`. Please refer to the |
67 | | - <<../user-guide/index.adoc#running-tests-discovery-issues, User Guide>> for details. |
68 | | -+ |
69 | | -If you're a test engine maintainer, please see the |
70 | | -<<../user-guide/index.adoc#test-engines-discovery-issues, User Guide>> for details on how |
71 | | -to start reporting discovery issues. |
72 | | -* Start reporting discovery issues for problematic `@Suite` classes: |
73 | | - - Invalid `@Suite` class declarations (for example, when `private`) |
74 | | - - Invalid `@BeforeSuite`/`@AfterSuite` method declarations (for example, when not |
75 | | - `static`) |
76 | | - - Cyclic dependencies between `@Suite` classes |
77 | | -* Introduce resource management mechanism that allows preparing and sharing state across |
78 | | - executions or test engines via stores that are scoped to a `LauncherSession` or |
79 | | - `ExecutionRequest`. The Jupiter API uses these stores as ancestors to the `Store` |
80 | | - instances accessible via `ExtensionContext` and provides a new method to access them |
81 | | - directly. Please refer to the User Guide for examples of managing |
82 | | - <<../user-guide/index.adoc#launcher-api-launcher-session-listeners-tool-example-usage, session-scoped>> |
83 | | - and |
84 | | - <<../user-guide/index.adoc#launcher-api-managing-state-across-test-engines, request-scoped>> |
85 | | - resources. |
86 | | -* New `ConsoleLauncher` options `--redirect-stdout` and `--redirect-stderr` for |
87 | | - redirecting `stdout` and `stderr` output streams to files. |
88 | | -* Add `TestDescriptor.Visitor.composite(List)` factory method for creating a composite |
89 | | - visitor that delegates to the given visitors in order. |
90 | | -* Introduce test _discovery_ support in `EngineTestKit` to ease testing for discovery |
91 | | - issues produced by a `TestEngine`. Please refer to the |
92 | | - <<../user-guide/index.adoc#testkit-engine, User Guide>> for details. |
93 | | -* Make validation of including `EngineFilters` more strict to avoid misconfiguration, for |
94 | | - example, due to typos. Prior to this release, an exception was only thrown when _none_ |
95 | | - of a filter's included IDs matched any engine. Now, an exception is thrown if at least |
96 | | - one included ID across all filters did not match any engine. |
97 | | - |
98 | | - |
99 | | -[[release-notes-5.13.0-junit-jupiter]] |
100 | | -=== JUnit Jupiter |
101 | | - |
102 | | -[[release-notes-5.13.0-junit-jupiter-bug-fixes]] |
103 | | -==== Bug Fixes |
104 | | - |
105 | | -* If the `autoCloseArguments` attribute in `@ParameterizedTest` is set to `true`, all |
106 | | - arguments returned by registered `ArgumentsProvider` implementations are now closed even |
107 | | - if the test method declares fewer parameters. |
108 | | -* `AutoCloseable` arguments returned by an `ArgumentsProvider` are now closed even if they |
109 | | - are wrapped with `Named`. |
110 | | -* `AutoCloseable` arguments returned by an `ArgumentsProvider` are now closed even if a |
111 | | - failure happens prior to invoking the parameterized method. |
112 | | -* Validate _all_ versions specified in `@EnabledOnJre` and `@DisabledOnJre` annotations. |
113 | | - |
114 | | -[[release-notes-5.13.0-junit-jupiter-new-features-and-improvements]] |
115 | | -==== New Features and Improvements |
116 | | - |
117 | | -* New `@ClassTemplate` annotation and `ClassTemplateInvocationContextProvider` API that |
118 | | - allow declaring a top-level or `@Nested` test class as a template to be invoked multiple |
119 | | - times. This may be used, for example, to inject different parameters to be used by all |
120 | | - tests in the class template or to set up each invocation of the class template |
121 | | - differently. Please refer to the |
122 | | - <<../user-guide/index.adoc#writing-tests-class-templates, User Guide>> for details. |
123 | | -* New `BeforeClassTemplateInvocationCallback` and `AfterClassTemplateInvocationCallback` |
124 | | - extension callback interfaces allow implementing extensions that are invoked before and |
125 | | - after each invocation of a class template. |
126 | | -* New `@ParameterizedClass` support that builds on `@ClassTemplate` and allows declaring a |
127 | | - top-level or `@Nested` test class as a parameterized test class to be invoked multiple |
128 | | - times with different arguments. The same `@...Source` annotations supported with |
129 | | - `@ParameterizedTest` may be used to provide arguments via constructor or field |
130 | | - injection. Please refer to the |
131 | | - <<../user-guide/index.adoc#writing-tests-parameterized-tests, User Guide>> for details. |
132 | | -* New `@ParameterizedClass`-specific |
133 | | - `@BeforeParameterizedClassInvocation`/`@AfterParameterizedClassInvocation` lifecycle |
134 | | - methods that are invoked once before/after each invocation of the parameterized class. |
135 | | -* Provide access to the parameters and resolved arguments of a `@ParameterizedTest` or |
136 | | - `@ParameterizedClass` by storing `ParameterInfo` in the `ExtensionContext.Store` for |
137 | | - retrieval by other extensions. Please refer to the |
138 | | - link:../api/org.junit.jupiter.params/org/junit/jupiter/params/support/ParameterInfo.html[Javadoc] |
139 | | - for details. |
140 | | -* New `@SentenceFragment` annotation which allows one to supply custom text for individual |
141 | | - sentence fragments when using the `IndicativeSentences` `DisplayNameGenerator`. See the |
142 | | - updated documentation in the |
143 | | - <<../user-guide/index.adoc#writing-tests-display-name-generator, User Guide>> for an |
144 | | - example. |
145 | | -* New `TestTemplateInvocationContext.prepareInvocation(ExtensionContext)` callback method |
146 | | - which allows extensions to prepare the `ExtensionContext` before the test template |
147 | | - method is invoked. This may be used, for example, to store entries in the |
148 | | - `ExtensionContext.Store` to benefit from its cleanup support or for retrieval by other |
149 | | - extensions. |
150 | | -* Start reporting discovery issues for potentially problematic test classes: |
151 | | - - Invalid `@Test` and `@TestTemplate` method declarations (for example, when return |
152 | | - type is not `void`) |
153 | | - - Invalid `@TestFactory` methods (for example, when return type is invalid) |
154 | | - - Multiple method-level annotations (for example, `@Test` and `@TestTemplate`) |
155 | | - - Invalid test class and `@Nested` class declarations (for example, `static` `@Nested` |
156 | | - classes) |
157 | | - - Potentially missing `@Nested` annotations (for example, non-abstract inner classes |
158 | | - that contain test methods) |
159 | | - - Invalid lifecycle method declarations (for example, when `private`) |
160 | | - - Invalid `@Tag` syntax |
161 | | - - Blank `@DisplayName` declarations |
162 | | - - Blank `@SentenceFragment` declarations |
163 | | - - `@BeforeParameterizedClassInvocation` and `@AfterParameterizedClassInvocation` |
164 | | - methods declared in non-parameterized test classes |
165 | | -* By default, `AutoCloseable` objects put into `ExtensionContext.Store` are now treated |
166 | | - like instances of `CloseableResource` (which has been deprecated) and are closed |
167 | | - automatically when the store is closed at the end of the test lifecycle. It's possible |
168 | | - to <<../user-guide/index.adoc#extensions-keeping-state-autocloseable-support, revert to the old behavior>> |
169 | | - via a configuration parameter. Please also see the |
170 | | - <<../user-guide/index.adoc#extensions-keeping-state-autocloseable-migration, migration note>> |
171 | | - for third-party extensions wanting to support both JUnit 5.13 and earlier versions. |
172 | | -* `java.util.Locale` arguments are now converted according to the IETF BCP 47 language tag |
173 | | - format. See the |
174 | | - <<../user-guide/index.adoc#writing-tests-parameterized-tests-argument-conversion-implicit, User Guide>> |
175 | | - for details. |
176 | | -* Avoid reporting potentially misleading validation exception for `@ParameterizedClass` |
177 | | - test classes and `@ParameterizedTest` methods as suppressed exception for earlier |
178 | | - failures. |
179 | | -* Add support for Kotlin `Sequence` to `@MethodSource`, `@FieldSource`, and |
180 | | - `@TestFactory`. |
181 | | -* Allow publishing files to an existing directory via `TestReporter` and |
182 | | - `ExtensionContext`, for example, when re-running a test class. |
183 | | - |
184 | | - |
185 | | -[[release-notes-5.13.0-junit-vintage]] |
186 | | -=== JUnit Vintage |
187 | | - |
188 | | -No changes. |
| 18 | +For complete details consult the |
| 19 | +https://docs.junit.org/5.13.0/release-notes/index.html[5.13.0 Release Notes] online. |
0 commit comments