0

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'、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='URL を入力してください: ', 有効=真, 可視=真, 表示=真] javax.swing.JTextField[名前=null, テキスト='', 有効=真, 可視=真, 表示=真] javax.swing.JButton[名前= null、text='Submit'、enabled=true、visible=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_SELECTION、enabled=true、visible=true、showing=true] javax.swing.CellRendererPane[, 0,0,0x0,hidden] javax.swing.JScrollPane$ScrollBar[名前=null、値=0、blockIncrement=10、最小=0、最大=270、有効=true、表示=false、表示=false] javax. swing.plaf.metal.MetalScrollButton[name=null、text=''、enabled=true、visible=true、showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null、text=''、enabled=真、可視=真、表示=偽] javax.swing.JScrollPane$ScrollBar[名前=null、値=0、ブロック増分=10、最小=0、最大=381、有効=真、可視=偽、表示=偽] 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、表示 = false] myapp.ui.StatusPanel[name = null] javax.swing.JLabel[name = null、text = 'Status: '、enabled = true、visible = true、表示 = true] javax.swing.JLabel [name=null、text=''、enabled=true、visible=true、showing=true]plaf.metal.MetalScrollButton[name=null、text=''、enabled=true、visible=true、showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null、text=''、enabled=true、 visible=true、表示=false] myapp.ui.StatusPanel[name=null] javax.swing.JLabel[name=null、text='Status:'、enabled=true、visible=true、表示=true] javax.swing .JLabel[name=null、text=''、enabled=true、visible=true、表示=true]plaf.metal.MetalScrollButton[name=null、text=''、enabled=true、visible=true、showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null、text=''、enabled=true、 visible=true、表示=false] myapp.ui.StatusPanel[name=null] javax.swing.JLabel[name=null、text='Status:'、enabled=true、visible=true、表示=true] javax.swing .JLabel[name=null、text=''、enabled=true、visible=true、表示=true]表示=真] javax.swing.JLabel[名前=null、テキスト=''、有効=真、可視=真、表示=真]表示=真] javax.swing.JLabel[名前=null、テキスト=''、有効=真、可視=真、表示=真]

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. 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) org.fest.swing.fixture.ContainerFixture.panel(ContainerFixture.java:406) で myapp.ui.myappUITest.setUp(myappUITest.java:32) で

4

1 に答える 1

1

スタックトレースを見ると、 type のコンポーネントがありますmyapp.ui.TopPanelが、名前は null (myapp.ui.TopPanel[name=null]) です。

window.panel("topPanel")は「topPanel」という名前の JPanel を検索するため、 を使用してコンポーネントの名前を設定するmTopPanel.setName("topPanel");か、代わりにマッチャーを使用する必要があります。

于 2015-06-17T13:54:18.383 に答える