首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fest跑步速度

Fest跑步速度
EN

Stack Overflow用户
提问于 2015-03-02 17:42:32
回答 1查看 88关注 0票数 0

我正在尝试为基于swing的应用程序选择一个Gui测试框架工具。我开始在FEST上看一看,并创建了一个演示程序来检查运行时间有多快。

我的演示程序(代码如下)花了大约85000毫秒才完成,这对我来说似乎非常慢。

所以我的问题是这是Fest的正常速度吗?

代码语言:javascript
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-05-07 02:13:23

该装置有一个settings()函数,该函数返回存储延迟时间的Settings对象。

将该时间更改为更适合的值:

代码语言:javascript
复制
public static void main(String[] args)
{
    main.settings().idleTimeout(2000);

FEST似乎等待JVM上的所有处理完成,然后才能进行下一步测试。

这个设置是在不等待所有东西停止的情况下尝试下一步的超时(在我的例子中,它永远不会停止,我不知道为什么)。所以FEST总是落在timeout子句中,默认情况下是10000ms (或10s)。

您必须计算出设置中每种类型的操作的值。

这将取决于你的硬件和你的程序计算的东西的数量。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28806593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档