0

我们在 Build-Server 上得到了一个AssertionFailedException,但在 IDE 中启动时测试运行良好。

Build-Job 在 Windows 上运行,而不是作为服务运行,所以这应该不是问题。

org.eclipse.swtbot.swt.finder.exceptions.AssertionFailedException: assertion failed: Could not post keyevent.
at org.eclipse.swtbot.swt.finder.utils.internal.Assert.isTrue(Assert.java:95)
at org.eclipse.swtbot.swt.finder.keyboard.SWTKeyboardStrategy.pressKey(SWTKeyboardStrategy.java:41)
at org.eclipse.swtbot.swt.finder.keyboard.AbstractKeyboardStrategy.pressKeys(AbstractKeyboardStrategy.java:56)
at org.eclipse.swtbot.swt.finder.keyboard.Keyboard.pressKeys(Keyboard.java:157)
at org.eclipse.swtbot.swt.finder.keyboard.Keyboard.pressShortcut(Keyboard.java:123)
4

1 回答 1

0

我们尝试发送 CR 密钥并找到以下解决方法。我们没有向操作系统发送事件并等待操作系统回复 defaultSelection 事件,而是我们自己发送了 defaultSelection 事件。我们的原始代码如下所示:

KeyboardFactory.getSWTKeyboard().pressShortcut(Keystrokes.CR);

然后我们将其替换为:

final Event event = new Event();
SWTBot bot = new SWTBot();
SWTBotList variableList = bot.listWithId(DIALOG_LIST);
event.type = SWT.DefaultSelection;
event.display = bot.getDisplay();
event.widget = variableList.widget;
event.time = (int) System.currentTimeMillis();

bot.getDisplay().syncExec(new Runnable() {
    @Override
    public void run() {
        variableList.widget.notifyListeners(SWT.DefaultSelection, event);
    }
});

这解决了我们的问题。

于 2014-07-25T12:41:57.543 回答