Currently, the VirtualFlowTestUtils used ONLY for tests has many utility 
methods to get and do something with the VirtualFlow of Virtualized Controls.

It has one flaw: It may creates a temporary Stage with the StageLoader, when 
the Control was never inside a Scene (and Stage) yet. This is done to get the 
VirtualFlow, which is not possible otherwise.

Take the following test code:

VirtualFlowTestUtils.clickOnRow(tableView, 2);
VirtualFlowTestUtils.clickOnRow(tableView, 4);


What it does it to create a Stage for the first method and dispose it after. 
And create another Stage for the second method and dispose it after.

This does not test a realistic scenario and the chance is quite high that 
developers used that methods without even knowing that it contains such logic.

So the idea is to remove the StageLoader code from VirtualFlowTestUtils and 
rather use it in the Test code before calling the Util methods.

For the example above, this would result in:

stageLoader = new StageLoader(tableView);
VirtualFlowTestUtils.clickOnRow(tableView, 2);
VirtualFlowTestUtils.clickOnRow(tableView, 4);


The stageLoader should be disposed in an @AfterEach.

Note: Nearly all touched tests are indeed much older test code. New tests are 
not affected and already use it correcty.
Sometimes a call to `Toolkit.getToolkit().firePulse();` was needed. Previously, 
creating a new Stage for every call to the util methods did that implicitly.

-------------

Commit messages:
 - Fix jcheck whitespace
 - [TestBug] VirtualFlowTestUtils should not create a temporary Stage

Changes: https://git.openjdk.org/jfx/pull/1829/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1829&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8359598
  Stats: 364 lines in 12 files changed: 292 ins; 47 del; 25 mod
  Patch: https://git.openjdk.org/jfx/pull/1829.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1829/head:pull/1829

PR: https://git.openjdk.org/jfx/pull/1829

Reply via email to