RFR: 8359598: [TestBug] VirtualFlowTestUtils should not create a temporary Stage

Marius Hanl mhanl at openjdk.org
Sun Jun 15 19:05:45 UTC 2025


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


More information about the openjfx-dev mailing list