简体   繁体   English

Java Swing GUI测试巨星JPanel夹具错误

[英]Java Swing GUI Test Fest JPanel Fixture Error

Trying to use FEST to test my GUI, but I'm having a problem trying to access components that are contained inside a custom JPanel (TopPanel extends JPanel). 尝试使用FEST测试我的GUI,但是尝试访问自定义JPanel中包含的组件时遇到了问题(TopPanel扩展了JPanel)。 So the code below is failing when trying to reference the "topPane" which exists as a field inside the MainJFrame. 因此,以下代码在尝试引用MainJFrame中作为字段存在的“ topPane”时失败。 What am I doing wrong here? 我在这里做错了什么?

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();
    }

}

And here's the stacktrace, in case it's hepful: 这是堆栈跟踪,以防万一:

Unable to find component using matcher org.fest.swing.core.NameAndTypeMatcher[name='topPanel', type=javax.swing.JPanel, requireShowing=true]. 无法使用匹配器org.fest.swing.core.NameAndTypeMatcher [name ='topPanel',type = javax.swing.JPanel,requireShowing = true]查找组件。

Component hierarchy: myapp.ui.MainJFrame[name='frame0', title='myapp', enabled=true, visible=true, showing=true] 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='Enter Url: ', 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_SELECTI 组件层次结构:myapp.ui.MainJFrame [name ='frame0',title ='myapp',enabled = true,visible = true,显示= true] 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 ='Enter Url :',enabled = true,visible = true,显示= true] javax.swing.JTextField [name = null,text ='',enabled = true,visible = true,显示= true] javax.swing.JButton [name = null,文本=“提交”,启用= true,可见= true,显示= true] myapp.ui.ContentPanel [name = null] javax.swing.JScrollPane [name = null,enabled = true,visible = true,显示= 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_SELECTI ON, enabled=true, visible=true, showing=true] javax.swing.CellRendererPane[,0,0,0x0,hidden] javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=270, enabled=true, visible=false, showing=false] 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, visible=false, showing=false] 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] ON,启用= true,可见= true,显示= true] javax.swing.CellRendererPane [,0,0,0x0,hidden] javax.swing.JScrollPane $ ScrollBar [name = null,value = 0,blockIncrement = 10,最小值= 0,最大= 270,已启用= true,可见= false,显示= false] javax.swing.plaf.metal.MetalScrollButton [name = null,text =”,已启用= true,可见= true,显示= false] javax.swing.plaf.metal.MetalScrollButton [name = null,text ='',enabled = true,visible = true,显示= false] javax.swing.JScrollPane $ ScrollBar [name = null,value = 0,blockIncrement = 10 ,最小值= 0,最大值= 381,已启用= true,可见= false,显示=假] javax.swing.plaf.metal.MetalScrollButton [name = null,text ='',已启用= true,可见= true,显示= false] javax.swing.plaf.metal.MetalScrollButton [name = null,text ='',enabled = true,visible = true,显示= false] myapp.ui.StatusPanel [name = null] javax.swing.JLabel [name = null,文本=“状态:”,启用= true,可见= true,显示= true] javax.swing.JLabel [name = null,text =”,启用= true,可见= true,显示= true]

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

Looking at your stacktrace, there is a component of type myapp.ui.TopPanel , but the name is null (myapp.ui.TopPanel[name=null]). 查看您的myapp.ui.TopPanel ,有一个类型为myapp.ui.TopPanel的组件,但名称为null(myapp.ui.TopPanel [name = null])。

window.panel("topPanel") will search for a JPanel with name "topPanel", so you need to set the name of your component using mTopPanel.setName("topPanel"); window.panel("topPanel")将搜索名称为“ topPanel”的JPanel,因此您需要使用mTopPanel.setName("topPanel");设置组件的名称mTopPanel.setName("topPanel"); , or use a matcher instead. ,或者使用匹配器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM