所以我正在使用SWTbot测试一个eclipse插件,而我没有得到我期望的结果 - 当我把测试结果剪下来时,事实证明问题不在于机器人,而是我的一些代码已经从程序的另一部分(它完全正常运行)复制了
以下代码......
@RunWith(SWTBotJunit4ClassRunner.class)
public class Tests {
private static SWTWorkbenchBot bot;
@BeforeClass
public static void beforeClass() throws Exception {
bot = new SWTWorkbenchBot();
bot.viewByTitle("Welcome").close();
}
@Test
public void maybeThisWillWork(){
IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
System.out.println("A");
IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
System.out.println("B");
}
@AfterClass
public static void sleep() {
System.out.println("In the sleep function");
bot.sleep(10000);
}
}
给我输出 -
A
In the sleep function
而不是预期的
A
B
In the sleep function
有什么想法吗?
答案 0 :(得分:0)
您可能需要将测试作为JUnit插件测试运行。你试过了吗?
答案 1 :(得分:0)
所以事实证明答案是这样的(堆栈溢出的一个很好的优点是我实际上在其他地方解决了这个问题,记得我有类似的问题,然后不得不回到stackoverflow来提醒自己的细节)
SWTBot没有在UI线程中运行,因此空指针错误,我必须做的就是有效地使用:
Display display = bot.getDisplay();
display.syncExec(objectThatdoesthethingiwanttogetdoneintheUIthread);
System.out.println(objectThatdoesthethingiwanttogetdoneintheUIthread.results);
......这让事情变得有效......