我在eclipse Juno Service Release 2中使用swtBot编写自动化测试。我的代码
@BeforeClass
public static void beforeClass() {
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
bot = new SWTWorkbenchBot();
try {
bot.viewByTitle("Welcome").close();
} catch (WidgetNotFoundException e) {
// ignore
}
bot.menu("Window").menu("Preferences").click();
SWTBotShell shell = bot.shell("Preferences");
shell.activate();
SWTBotView view = bot.viewByTitle("Preferences");
bot.tree().expandNode("General").select("Workspace");
SWTBotCheckBox buildAuto = bot.checkBox("Build automatically");
if (buildAuto != null && buildAuto.isChecked())
buildAuto.click();
bot.button("Apply").click();
bot.tree().expandNode("General").select("Perspectives");
SWTBotRadio radio = bot.radio("Always open");
if (radio != null && !radio.isSelected())
radio.click();
bot.button("OK").click();
}
我遇到以下异常:
org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException: 无法找到shell匹配:使用文字'偏好设置'在 org.eclipse.swtbot.swt.finder.SWTBotFactory.waitUntilWidgetAppears(SWTBotFactory.java:387) 在 org.eclipse.swtbot.swt.finder.SWTBotFactory.shells(SWTBotFactory.java:114) 在 org.eclipse.swtbot.swt.finder.SWTBotFactory.shell(SWTBotFactory.java:104) 在 org.eclipse.swtbot.swt.finder.SWTBotFactory.shell(SWTBotFactory.java:95) 在com.packtpub.e4.junit.plugin.UITest.beforeClass(UITest.java:49) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)at java.lang.reflect.Method.invoke(未知来源)
答案 0 :(得分:0)
请勿将测试代码放在使用@BeforeClass
注释的方法中。此时,测试类甚至没有实例化。参看this answer here有关注释的解释。
如果您已将相关代码移至@Test
带注释的方法,但代码仍无效,请检查拼写等。