0

Swing ベースのアプリケーション用の GUI テスト フレームワーク ツールを選択しようとしています。私は FEST を調べ始め、実行時間がどれほど速いかを確認するデモ プログラムを作成しました。

私のデモ プログラム (以下のコード) は、完了するのに約 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);
    }
}
4

1 に答える 1

0

フィクスチャには、遅延時間が保存されている Settings オブジェクトを返す settings() 関数があります。

その時間をより適切な値に変更します。

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

FEST は、テストの次のステップに進む前に、JVM でのすべての処理が完了するのを待っているようです。

この設定は、すべての処理が停止するのを待たずに次のステップを試行するためのタイムアウトです (私の場合、停止することはなく、理由がわかりません)。したがって、FEST は常に、デフォルトで 10000 ミリ秒 (または 10 秒) のタイムアウト句に分類されます。

設定で操作の種類ごとに値を把握する必要があります。

ハードウェアと、プログラムが計算するものの量によって異なります。

注:私のコードの は、メイン メソッドではなく、main.settings()あなたの を指します。final FrameFixture main

于 2015-05-06T18:13:23.317 に答える