使用org.fest.swing.fixture.FrameFixture :: panel()传送Swing面板,它需要显示面板吗?

时间:2015-02-05 19:22:50

标签: swing unit-testing fest

我想使用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].

编辑:

我使用JComboBox绑定了类似的测试,使用了建议的模式 Jay Fichadia,但在我调用.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].

尽管我们在Component层次结构中有这样的事实:

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

2 个答案:

答案 0 :(得分:2)

我只是遇到了同样的问题,在这里看不到答案之后,我自己找到了解决方法。

问题是默认情况下frameFixture仅查找可见的组件。因此,如果要搜索不可见的组件,则必须更改此设置。您可以使用以下方法做到这一点:

myFrameFixture.robot.settings().componentLookupScope(ComponentLookupScope.ALL);

答案 1 :(得分:0)

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