【问题标题】:Java Swing GUI Test Fest JPanel Fixture ErrorJava Swing GUI 测试 Fest JPanel 夹具错误
【发布时间】:2015-06-14 20:43:24
【问题描述】:

尝试使用 FEST 测试我的 GUI,但我在尝试访问自定义 JPanel 中包含的组件时遇到问题(TopPanel 扩展了 JPanel)。因此,下面的代码在尝试引用作为 MainJFrame 内的字段存在的“topPane”时失败。我在这里做错了什么?

public class StableAppsUITest {

    private FrameFixture window;
    private JPanelFixture contentFixture;

    @Before
    public void setUp() {
        //Assumes the main class is named "Anagrams" and extends JFrame:
        window = new FrameFixture(new MainJFrame("Title"));
        window.show();
        contentFixture = window.panel("topPanel");

    }

    @Test
    public void shouldEnterAnagramAndReturnTrue() {

        // contentFixture.textBox("mUrlInputTextField").enterText("www.google.com");
    }

    @After
    public void tearDown() {
        window.cleanUp();
    }

}

这是堆栈跟踪,以防万一:

无法使用匹配器找到组件 org.fest.swing.core.NameAndTypeMatcher[name='topPanel', type=javax.swing.JPanel, requireShowing=true].

组件层次结构:myapp.ui.MainJFrame[name='frame0', title='myapp', 启用=真,可见=真,显示=真] javax.swing.JRootPane [] javax.swing.JPanel[name='null.glassPane'] javax.swing.JLayeredPane[] javax.swing.JPanel[name='null.contentPane'] myapp.ui.TopPanel[name=null] javax.swing.JLabel[name=null, text='输入网址:', enabled=true, visible=true,showing=true] javax.swing.JTextField[name=null,text='',enabled=true,visible=true,showing=true] javax.swing.JButton[name=null,text='Submit',enabled=true,visible=true,showing=true] myapp.ui.ContentPanel[name=null] javax.swing.JScrollPane[name=null, enabled=true, visible=true,showing=true] javax.swing.JViewport[,1,1,381x270,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition= java.awt.Point[x=0,y=0],scrollUnderway=false] javax.swing.JList[name=null, selectedValues=[], contents=[], selectionMode=MULTIPLE_INTERVAL_SELECTION, enabled=true, 可见=真,显示=真] javax.swing.CellRendererPane[,0,0,0x0,hidden] javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=270, enabled=true, 可见=假,显示=假] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=381, enabled=true, 可见=假,显示=假] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] myapp.ui.StatusPanel[name=null] javax.swing.JLabel[name=null, text='Status:', enabled=true, visible=true,showing=true] javax.swing.JLabel[name=null, text='', enabled=true, visible=true,showing=true]

org.fest.swing.exception.ComponentLookupException 在 org.fest.swing.core.BasicComponentFinder.componentNotFound(BasicComponentFinder.java:184) 在 org.fest.swing.core.BasicComponentFinder.find(BasicComponentFinder.java:169) 在 org.fest.swing.core.BasicComponentFinder.find(BasicComponentFinder.java:158) 在 org.fest.swing.core.BasicComponentFinder.findByName(BasicComponentFinder.java:136) 在 org.fest.swing.fixture.ContainerFixture.findByName(ContainerFixture.java:822) 在 org.fest.swing.fixture.ContainerFixture.panel(ContainerFixture.java:406) 在 myapp.ui.myappUITest.setUp(myappUITest.java:32)

【问题讨论】:

    标签: java swing gui-testing fest


    【解决方案1】:

    查看您的堆栈跟踪,有一个 myapp.ui.TopPanel 类型的组件,但名称为 null (myapp.ui.TopPanel[name=null])。

    window.panel("topPanel") 将搜索名为“topPanel”的 JPanel,因此您需要使用 mTopPanel.setName("topPanel"); 设置组件的名称,或者使用匹配器。

    【讨论】:

    • 是的,你是对的。忘记回答我的问题了。不过,谢谢。这就是我所缺少的: mTopPanel.setName("topPanel");您能否将这行代码添加到您的答案中。我想我也需要编辑我的问题,它缺少一些代码。不过,你在没有它的情况下成功了,这很酷。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多