测试 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);
我想为仅包含 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);