RFR: 8359598: [TestBug] VirtualFlowTestUtils should not create a temporary Stage [v2]
Marius Hanl
mhanl at openjdk.org
Sat Jul 12 10:35:23 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.
Marius Hanl has updated the pull request incrementally with one additional commit since the last revision:
Exception message
-------------
Changes:
- all: https://git.openjdk.org/jfx/pull/1829/files
- new: https://git.openjdk.org/jfx/pull/1829/files/5cde6fd6..8c5d40eb
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jfx&pr=1829&range=01
- incr: https://webrevs.openjdk.org/?repo=jfx&pr=1829&range=00-01
Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 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