我正在尝试为基于swing的应用程序选择Gui测试框架工具。 我开始看看FEST并创建了一个Demo程序来检查运行时间有多快。
我的演示程序(代码轰鸣声)花了大约85000毫秒来完成,这对我来说很慢。
所以我的问题是这是Fest的正常速度吗?
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 :(得分:0)
fixture具有settings()函数,该函数返回存储延迟时间的Settings对象。
将时间更改为更合适的值:
Form
似乎FEST等待JVM上所有处理的完成,然后才能进入下一步测试。
此设置是尝试下一步而不等待所有内容停止的超时(在我的情况下,它永远不会停止,我不知道为什么)。所以FEST总是属于超时子句,默认情况下是10000ms(或10s)。
您必须在设置中找出每种操作类型的值。
这取决于您的硬件和程序计算的内容量。
注意:我的代码中的public static void main(String[] args)
{
main.settings().idleTimeout(2000);
是指main.settings()
,而不是主要方法。