【发布时间】:2012-10-21 22:06:29
【问题描述】:
好的,所以我正在尝试对一些 GUI 元素进行单元测试。我有一个 JButton,其文本为“创建”,助记符设置为“C”或代码 67。 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 测试可能很棘手,并且有一些工具可以模拟用户交互,但模拟或触发单个 KeyEvent 真的那么难吗?
欢迎任何帮助,也欢迎任何推荐的 UI 测试工具。
谢谢
注意:这是 Java 和 Groovy 的组合,所以我使用 SwingBuilder 来构建我的 UI
【问题讨论】: