0

我想使用 FEST 来测试 Swing 组件是否不可见。

我尝试使用org.fest.swing.fixture.FrameFixture方法panel(“foo”)但失败了,因为它需要requireShowing=true.

什么是使用 FEST 查找面板的惯用方法,无论它现在是否可见?

Assert.assertFalse(panel.getFooPanel().isVisible()); // works ok
myFrameFixture.panel(“foo”).requireNotVisible(); // fails 

第二行给出了这个......

     javax.swing.JPanel[name='foo']

org.fest.swing.exception.ComponentLookupException: Unable to find component
using matcher 
org.fest.swing.core.NameMatcher[name='foo, type=javax.swing.JPanel, requireShowing=true].

编辑 :

我使用 Jay Fichadia 建议的模式将类似的测试与 JComboBox 捆绑在一起,但它似乎仍然需要在我调用之前显示该项目,.requireNotVisible() 例如new JComboBoxFixture(frame.robot,"grid_combo");单独尝试(没有实际的 requireNotVisible() 检查)给出......

    Caused an ERROR
Unable to find component using matcher org.fest.swing.core.NameMatcher[name='grid_combo', type=javax.swing.JComboBox, requireShowing=true].

尽管我们在组件层次结构中有:

javax.swing.JComboBox[name='grid_combo', selectedItem='A', contents=['A', 'B'], editable=false, enabled=false, visible=false, showing=false]
4

2 回答 2

2

我刚刚遇到同样的问题,在这里没有看到答案后,我自己找到了解决方案。

问题是 frameFixture 默认只查找可见的组件。因此,如果您想搜索不可见的组件,则必须更改此设置。您可以使用以下方法执行此操作:

myFrameFixture.robot.settings().componentLookupScope(ComponentLookupScope.ALL);
于 2020-07-31T09:58:46.203 回答
0

您是否尝试使用new JPanelFixture(robot,"foo").requireNotVisible();

于 2015-05-19T05:35:04.413 回答