【问题标题】:TestFx - How to test javaFx MenuItemsTestFx - 如何测试 javaFx MenuItems
【发布时间】:2018-02-21 14:50:34
【问题描述】:

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

(返回对象的toString表示):

(ContextMenuContent$MenuItemContainer[id=mnEditHrom, styleClass=menu-item])

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

假设我有带有“mnEdit”ID 的 MenuItem,它已被禁用。当我打电话时

find("#mnEdit").isDisabled();

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

public <T extends Node> T find(String query) 
{
  return (T) lookup(query).queryAll().iterator().next();
} 

同样,我如何测试某些 MenuItem 在 testFx 中是否被禁用?

【问题讨论】:

    标签: javafx menuitem testfx


    【解决方案1】:

    您几乎完成了原始帖子。当你得到MenuItemContainer 时,首先得到MenuItem,最后调用isDisable()

    ContextMenuContent.MenuItemContainer actualMenuItemContainer = find("#mnEdit");
    
    boolean actualResult = actualMenuItemContainer.getItem().isDisable();
    

    【讨论】:

      【解决方案2】:

      我通过查找 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;
      }
      

      【讨论】:

        猜你喜欢
        • 2015-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-17
        • 2023-03-10
        • 2022-01-13
        相关资源
        最近更新 更多