2

わかりましたので、いくつかの GUI 要素を単体テストしようとしています。「Create」というテキストとニーモニックが「C」またはコード 67 に設定された JButton があります。.doClick 関数を呼び出すことができる単体テストを作成できます。そのボタンが行うべきことが起こると主張します。

ただし、同じボタンのニーモニック部分がボタンのクリックと同じように機能することをテストする単体テストを作成したいと思います。私は数日間オンとオフを検索し、多くのことを試しました。

awt ライブラリの Robot を使用してみました:

robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);

イベントがトリガーされていないため、最近、次の EventQueue の例を試しました。

final Toolkit toolkit = Toolkit.getDefaultToolkit();
final EventQueue eventQueue = toolkit.getSystemEventQueue();
gPane = new SwingBuilder();
panel = new MainMenuPanel();
panel.displayMainMenu(gPane); 

@Test
void ShouldMakeRaceGenderPanelVisibleKeyPress(){
eventQueue.postEvent( new KeyEvent(panel.gPane.mainM, KeyEvent.KEY_PRESSED, System.currentTimeMillis(), 0, KeyEvent.VK_C ).getKeyCode());

    assertThat panel.gPane.mainM.isVisible(), is(false);
    assertThat panel.gPane.raceGender.isVisible(), is(true);
}

GUI テストが難しい場合があり、ユーザー操作をシミュレートするツールが世の中にあることは知っていますが、1 つの KeyEvent だけをシミュレートまたはトリガーするのは本当に難しいのでしょうか?

どんな支援も大歓迎です。また、推奨される UI テスト ツールも大歓迎です。

ありがとう

注: これは Java と Groovy の組み合わせなので、SwingBuilder を使用して UI を構築しています。

4

1 に答える 1

0

あなたは次のように述べています:

「作成」のテキストとニーモニックが「C」またはコード 67 に設定された JButton があります。 ...
ただし、同じボタンのニーモニック部分がボタンと同じように機能することをテストする単体テストを作成したいと考えています。クリック。...

awt ライブラリの Robot を使用してみました:

robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);

おそらく問題は、JButton ニーモニックが alt キーの組み合わせであることを考慮していないためであり、ロボット コードはおそらくこれを反映する必要があります。

robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_C);

// possibly want a small Thread.sleep(...) here?

robot.keyRelease(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_ALT);
于 2012-10-21T14:06:29.053 に答える