首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TestFx -如何测试javaFx MenuItems

TestFx -如何测试javaFx MenuItems
EN

Stack Overflow用户
提问于 2018-02-21 22:50:34
回答 2查看 973关注 0票数 1

因为MenuItem不是Node,所以我无法查找它。如果某些MenuItem被禁用,我该如何测试?我试着查找它,因为它是一个节点,它返回给我一些东西,看起来像这样。

(返回对象的toString表示):

(ContextMenuContent$MenuItemContainerid=mnEditHrom,样式类=菜单项)

但我不能在上面强制转换MenuItem,它说“节点不能转换为MenuItem”,当我对返回的内容调用isDisabled()函数时,我得到了不正确的信息。

假设我有一个id为"mnEdit“的MenuItem,它被禁用了。当我打电话的时候

代码语言:javascript
复制
find("#mnEdit").isDisabled();

它返回false。Find方法如下所示:

代码语言:javascript
复制
public <T extends Node> T find(String query) 
{
  return (T) lookup(query).queryAll().iterator().next();
} 

那么,我如何测试在testFx中是否禁用了某些MenuItem?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-03 14:36:43

在最初的帖子中,你几乎完成了。获取MenuItemContainer时,首先获取MenuItem,最后调用isDisable()

代码语言:javascript
复制
ContextMenuContent.MenuItemContainer actualMenuItemContainer = find("#mnEdit");

boolean actualResult = actualMenuItemContainer.getItem().isDisable();
票数 2
EN

Stack Overflow用户

发布于 2018-02-22 18:03:20

我通过查找MenuBar来解决这个问题,根据它的Id来识别我想测试的项,现在MenuItem已经掌握在我手中,我可以在它上面调用isDisable()。

MenuTest.class

代码语言:javascript
复制
CommonTests common = new CommmonTests();  

@Test
public void disabledMenuItemTest() 
{
  common.disabledMenuItemTest("#mainMenu", "mnEditHrom", true);
}

CommonTests.class

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48908881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档