> 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

Reply via email to