> 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...
Andy Goryachev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 20 additional commits since the last revision: - review comments - Merge remote-tracking branch 'origin/master' into 8338468.junit5.controls - review comments - Merge remote-tracking branch 'origin/master' into 8338468.junit5.controls - review comments - Merge remote-tracking branch 'origin/master' into 8338468.junit5.controls - part 12, 9274 - 185 = 9089 - Merge remote-tracking branch 'origin/master' into 8338468.junit5.controls - part 11, 9242 tests, 185 ignored - part 10 - ... and 10 more: https://git.openjdk.org/jfx/compare/3aec3eb3...6c44cc6c ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1561/files - new: https://git.openjdk.org/jfx/pull/1561/files/55b33b2c..6c44cc6c Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1561&range=03 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1561&range=02-03 Stats: 12751 lines in 157 files changed: 10957 ins; 572 del; 1222 mod Patch: https://git.openjdk.org/jfx/pull/1561.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1561/head:pull/1561 PR: https://git.openjdk.org/jfx/pull/1561