Integrated: 8338468: [TestBug] Convert controls tests to JUnit 5
Andy Goryachev
angorya at openjdk.org
Mon Sep 23 18:32:48 UTC 2024
On Tue, 10 Sep 2024 18:25:40 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
> Converting control module tests to junit5.
>
> The following notes might help reviewers and people migrating other parts of https://bugs.openjdk.org/browse/JDK-8339170. The direct link to the notes:
> https://github.com/andy-goryachev-oracle/Test/blob/main/doc/Tests/JUnit5Migration.md
>
> ## JUnit5 Migration Notes
>
> Most of the changes are trivial, except for the following:
>
> 1. assertEquals() and similar methods: the message can be confused with the expected argument (junit5 moved the message to the last position)
> 2. parameterized tests: junit5 allows for parameterizing individual tests
> 3. parameterized `@BeforeEach` and `@AfterEach`: (see discussion below)
> 4. charts: the test hierarchy for charts mixed parameterized and non-parameterized kinds, necessitating more changes
> 5. overridden parameterized tests (must be annotated with ` @ParameterizedTest @MethodSource`
>
> ### Parameterized Class-Level Tests
>
> junit5 does not support parameterized class-level tests yet (see https://github.com/junit-team/junit5/issues/878)
>
> The workaround is to setup each test explicitly by calling the method that used to be annotated with `@Before` in each parameterized test method. There might be another solutions (see, for example, https://stackoverflow.com/questions/62036724/how-to-parameterize-beforeeach-in-junit-5/69265907#69265907) but I thought explicit setup might be simpler to deploy.
>
> To summarize:
> - remove `@Before` from the setup method
> - call the setup method from each parameterized method (adding parameters and replacing `@Test` with
>
> @ParameterizedTest
> @MethodSource("parameters")
>
> where parameters() is a static method which supplies the parameters. In the case when parameters have more than one element, the following code might be useful:
>
> private static Stream<Arguments> parameters() {
> return Stream.of(
> Arguments.of("a", 1),
> Arguments.of("foo", 3)
> );
> }
>
>
> ### Migration Tricks
>
> Here are the steps that might speed up the process:
>
> 1. remove all the junit4 imports
> 2. paste the following junit5 imports (below)
> 3. fix the errors
> 6. optimize imports via IDE (command-shift-O in Eclipse on macOS)
> 7. after all is done, verify that there is no more junit4 names by running the command mentioned below
>
> junit5 imports (in no particular order):
>
> import org.junit.jupiter.api.AfterEach;
> import org.junit.jupiter.api.BeforeEach;
> import org.junit.jupiter.api.Test;
> import org.junit.jupiter.api.Disabled;
> import org.junit.jupiter.params.ParameterizedTest;
> imp...
This pull request has now been integrated.
Changeset: 51717533
Author: Andy Goryachev <angorya at openjdk.org>
URL: https://git.openjdk.org/jfx/commit/51717533b1d54fdb8a2817035b201763b3d4febe
Stats: 9605 lines in 212 files changed: 3409 ins; 1823 del; 4373 mod
8338468: [TestBug] Convert controls tests to JUnit 5
Reviewed-by: mhanl, lkostyra, arapte
-------------
PR: https://git.openjdk.org/jfx/pull/1561
More information about the openjfx-dev
mailing list