2

好的,所以我正在尝试对一些 GUI 元素进行单元测试并断言该按钮应该做什么,发生。

但是,我现在想编写一个单元测试来测试同一个按钮的助记符部分是否与按钮单击相同。我已经断断续续地搜索了几天,并尝试了很多东西。

我尝试使用来自 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

4

1 回答 1

0

你说:

我有一个 JButton,其文本为“创建”,助记符设置为“C”或代码 67。...
但是,我现在想编写一个单元测试来测试同一个按钮的助记符部分是否与按钮相同点击。...

我尝试使用来自 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 回答