测试 JavaFX ListView 项目选择

Test JavaFX ListView item selection

我想为仅包含 ListView 的控制器创建单元测试(使用 JUnit 5)。我要测试的用例是当一个项目是 selected/clicked-on 时调用正确的回调。

在我的单元测试中,我正在做以下事情:

myController.theListUnderTesting.selectionModel.select(i-th element)

但是 selectedItemProperty 侦听器从未被调用。这显然在正常启动和使用应用程序时没有问题。

我看到有 TestFX 等库可以帮助测试,但我不喜欢它,因为它会启动应用程序并模拟屏幕上的用户交互。

有没有办法在不必 运行 应用程序和模拟交互的情况下测试这种行为?

我最后做的是:

Node nodeToClick = myController.getTheListUnderTesting().getChildrenUnmodifiable()[123];

            MouseEvent mouseEvent =
                    new MouseEvent(
                            MouseEvent.MOUSE_CLICKED,
                            0.0,
                            0.0,
                            0.0,
                            0.0, MouseButton.PRIMARY, 1, false, false, false, false, false, false, false, false, false, true,
                            new PickResult(nodeToClick, 0.0, 0.0)
                    );

            MouseEvent.fireEvent(nodeToClick, mouseEvent);