因为MenuItem不是Node,所以我无法查找它。如果某些MenuItem被禁用,我该如何测试?我试着查找它,因为它是一个节点,它返回给我一些东西,看起来像这样。
(返回对象的toString表示):
(ContextMenuContent$MenuItemContainerid=mnEditHrom,样式类=菜单项)
但我不能在上面强制转换MenuItem,它说“节点不能转换为MenuItem”,当我对返回的内容调用isDisabled()函数时,我得到了不正确的信息。
假设我有一个id为"mnEdit“的MenuItem,它被禁用了。当我打电话的时候
find("#mnEdit").isDisabled();它返回false。Find方法如下所示:
public <T extends Node> T find(String query)
{
return (T) lookup(query).queryAll().iterator().next();
} 那么,我如何测试在testFx中是否禁用了某些MenuItem?
发布于 2018-03-03 14:36:43
在最初的帖子中,你几乎完成了。获取MenuItemContainer时,首先获取MenuItem,最后调用isDisable()
ContextMenuContent.MenuItemContainer actualMenuItemContainer = find("#mnEdit");
boolean actualResult = actualMenuItemContainer.getItem().isDisable();发布于 2018-02-22 18:03:20
我通过查找MenuBar来解决这个问题,根据它的Id来识别我想测试的项,现在MenuItem已经掌握在我手中,我可以在它上面调用isDisable()。
MenuTest.class
CommonTests common = new CommmonTests();
@Test
public void disabledMenuItemTest()
{
common.disabledMenuItemTest("#mainMenu", "mnEditHrom", true);
}CommonTests.class
TestUtils utils = new TestUtils();
public void disabledMenuItemTest(String menuBarSelector, String menuItemId, boolean expected)
{
Boolean actual = utils.isMenuItemDisabled(menuBarSelector, menuItemId);
if (actual != null)
assertEquals("MenuItem "+menuItemId+" je enabled/disabled (expected = "+expected+").", expected, actual.booleanValue());
else
fail("MenuBar/MenuItem not found.");
}TestUtils.class
public Boolean isMenuItemDisabled(String menuBarSelector, String menuItemId)
{
ArrayList<MenuItem> list = getAllMenuItems(menuBarSelector);
Boolean disabled = null;
if(list != null)
{
for(MenuItem item : list)
{
if(item.getId() != null && item.getId().equals(menuItemId))
return item.isDisable();
}
}
return disabled;
}
private ArrayList<MenuItem> getAllMenuItems(String menuBarSelector)
{
ArrayList<MenuItem> itemsList = new ArrayList<MenuItem>();
MenuBar menuBar = (MenuBar) find(menuBarSelector);
if(menuBar != null)
{
menuBar.getMenus().forEach(menu -> {
menu.getItems().forEach(menuItem -> {
itemsList.add(menuItem);
});
});
return itemsList;
}
return null;
}https://stackoverflow.com/questions/48908881
复制相似问题