由于MenuItem不是Node,我无法查找。如果某些MenuItem被禁用,我该如何测试? 我试着查看它,因为它是一个节点,它给我一些东西,看起来像这样......
(返回对象的toString表示):
(ContextMenuContent $ MenuItemContainer [id = mnEditHrom,styleClass = menu-item])
但我无法在其上投射MenuItem,它说“Node无法转换为MenuItem”,当我在返回的内容上调用isDisabled()函数时,我得到的信息不正确。
假设我有一个带有“mnEdit”id的MenuItem,它被禁用。当我打电话
find("#mnEdit").isDisabled();
它返回false。 Find方法如下所示:
public <T extends Node> T find(String query)
{
return (T) lookup(query).queryAll().iterator().next();
}
同样,我如何测试testFx中是否禁用了某些MenuItem?
答案 0 :(得分:1)
你几乎在原帖中完成了。获得MenuItemContainer
后,首先获取MenuItem
,最后致电isDisable()
:
ContextMenuContent.MenuItemContainer actualMenuItemContainer = find("#mnEdit");
boolean actualResult = actualMenuItemContainer.getItem().isDisable();
答案 1 :(得分:0)
我通过查找MenuBar来解决它,识别我要通过其Id测试的项目,因为我现在手中有MenuItem obejct,我可以在其上调用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;
}