2015-03-02 70 views
0

我想爲基於swing的應用程序選擇Gui測試框架工具。 我開始看看FEST,並創建了一個Demo程序來檢查運行時間有多快。巨星運行速度

我的演示程序(代碼波紋管)花了大​​約85000毫秒來完成,這對我來說顯得非常慢。

所以我的問題是這個節日的正常速度?

public class DemoGui extends JFrame 
{ 
    private JPanel contentPane; 
    private JTextField textField; 
    private JPanel panel; 
    private JButton btnNewButton; 
    private JButton btnRun; 

    public static final int REPEAT = 10; 

    public static void runX(final JFrame window) 
    { 
     final FrameFixture main = new FrameFixture(window); 

     new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       final long start = System.currentTimeMillis(); 
       for (int i = 0; i < REPEAT; i++) 
       { 
        main.textBox().deleteText().setText("this is a test demo"); 
        main.button(JButtonMatcher.withText("OK")).click(); 
       } 
       final long end = System.currentTimeMillis(); 
       System.out.println("Exec Time : " + String.valueOf(end - start)); 

      } 
     }).start(); 
    } 


    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       try 
       { 
        DemoGui frame = new DemoGui(); 
        frame.setVisible(true); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public DemoGui() 
    { 
     setTitle("DemoGui"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     contentPane.setLayout(new BorderLayout(0, 0)); 
     setContentPane(contentPane); 

     textField = new JTextField(); 
     contentPane.add(textField, BorderLayout.NORTH); 
     textField.setColumns(10); 

     panel = new JPanel(); 
     contentPane.add(panel, BorderLayout.SOUTH); 

     btnRun = new JButton("run"); 
     btnRun.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       runX(DemoGui.this); 
      } 
     }); 
     panel.add(btnRun); 

     btnNewButton = new JButton("OK"); 
     panel.add(btnNewButton); 
    } 
} 

回答

0

該夾具具有一設置()函數,返回設置對象的延遲時間的存儲位置。

變化,時代的更擬合值:

public static void main(String[] args) 
{ 
    main.settings().idleTimeout(2000); 

看來,FEST等待所有處理的JVM上之前完成,你可以去測試下一個步驟。

此設置是超時嘗試下一步,而不等待所有的東西停止(在我的情況下,它永遠不會停止,我不知道爲什麼)。所以FEST總是屬於超時條款,默認爲10000ms(或10s)。

您必須找出設置中每種操作類型的值。

這取決於你的硬件和你的程序計算的東西的數量。

注意:我的代碼中的main.settings()指的是您的final FrameFixture main,而不是主要方法。