用java.awt.Robot测试键盘输入
我有一个使用java.awt.Robot测试定制Swing组件的测试。我想在我们的构建服务器上运行测试,但是构建服务器在锁定的windows机器上运行,Robot.keyPress(char)不能在屏幕锁定的情况下工作。我发送的击键有时是向下箭头和退格,因此直接将它们发送到文档没有帮助用java.awt.Robot测试键盘输入,java,swing,awtrobot,Java,Swing,Awtrobot,我有一个使用java.awt.Robot测试定制Swing组件的测试。我想在我们的构建服务器上运行测试,但是构建服务器在锁定的windows机器上运行,Robot.keyPress(char)不能在屏幕锁定的情况下工作。我发送的击键有时是向下箭头和退格,因此直接将它们发送到文档没有帮助 目前,如果键盘输入在第一次尝试时不起作用,我只是使用junit的Aspect跳过测试,但是我想让这些测试保持启用状态。我假设有人正在对Swing gui运行这些类型的测试。有什么想法吗?暗中捅一刀:也许虚拟机(如
目前,如果键盘输入在第一次尝试时不起作用,我只是使用junit的Aspect跳过测试,但是我想让这些测试保持启用状态。我假设有人正在对Swing gui运行这些类型的测试。有什么想法吗?暗中捅一刀:也许虚拟机(如VirtualBox)可以在后台运行,但就所有意图和目的而言,就机器人所知,它是“唤醒并解锁”的。虚拟机将运行您的单元测试。您尝试过使用java模式吗?
我猜java.awt.Robot在这种情况下不起作用,因为它具体取决于加载的awt。在这种情况下,最好依赖gui测试框架,如cool(并在无头模式下运行)。如果在无头模式下启动,Robot会抛出异常。我用过fest,但它也依赖于机器人。我从来没有试过让fest在持续集成服务器上玩得很好,但我想我会遇到同样的问题。哦,该死,你说得对。。。我记得在这样做的时候,我们像推荐的那样,提供了一个可用的AWT gui,而不依赖于物理屏幕。这对于自动化集成测试来说是一个非常酷的想法。不幸的是,我无法控制我们的构建环境,即使我控制了,修复这一个测试也太过分了。