首页 > 解决方案 > 无头模式下的 SWTBot 和 java.lang.ExceptionInInitializerError

问题描述

我们遇到以下问题。如果我们尝试在 Jenkins 管理下执行我们的自动化测试套件,我们会在使用键盘的测试中收到 java.lang.ExceptionInInitializerError。在 Jenkins 控制下执行测试意味着 SWTBot 处于无头模式。我们的目标平台是 Windows 10。根据 SWTBot 开发人员的说明,无头模式未在 Windows 下进行测试。我们使用 SWTBot 版本 2.2.1。如果我们在没有 Jenkins 的远程虚拟机上执行 SWTBot 测试套件。未观察到此问题。此外,我们的调查表明,如果未找到键盘布局,则可以在本地计算机上重现此问题。所以,我想这个问题的根本原因是在这种情况下缺少物理键盘。我们还考虑了 java.lang。

我的调查表明,当测试尝试按下键时会发生此问题。通过使用 setText 方法而不是 typeText 可以部分解决此问题。但是我们有一组测试来验证键盘组合的处理,例如 Alt+A 或按 Enter。

正在测试的应用程序是基于非常老的 Eclipse 平台(版本 3.6)的 Eclipse RCP 应用程序

标签: eclipsejenkinsswteclipse-rcpswtbot

解决方案


根据 SWTBot 论坛的建议。(SWTBot论坛话题)下面这行代码

SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US"; 

解决了这个问题。此行插入到具有注释 @BeforeTest 的方法中


推荐阅读