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

问题描述:

我想用FEST来测试一个Swing组件是不可见的。使用org.fest.swing.fixture.FrameFixture :: panel()发送Swing面板,它需要面板显示?

我尝试使用org.fest.swing.fixture.FrameFixture方法panel(“foo”)但由于它需要requireShowing=true.

什么用FEST惯用的方法来找到一个面板irregardless如果它现在是可见的失败?

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类似的测试,使用 周杰伦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]. 

尽管我们在组件层次的事实:

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

您是否将面板添加到框架中?并称setVisible(false)? – keuleJ 2015-05-19 05:42:55

+0

@keuleJ对两者都是。用更多信息更新了问题。 – k1eran 2015-05-19 09:36:46

+0

而你做panel.setName(“foo”)?你尝试过使用调试器吗? – keuleJ 2015-05-19 11:54:03

你尝试使用new JPanelFixture(robot,"foo").requireNotVisible();

+0

没有这种方法@ jay-fichadia运气。编辑的问题说。 – k1eran 2015-05-19 09:37:34

+0

你如何获取FrameFixture对象? 另外,您的UI组件是否启用?我的意思是在你的UI代码中你禁用了它们或什么? – 2015-05-19 11:13:32