わかりましたので、いくつかの 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 を構築しています。