SWTbot测试表现不尽如人意

时间:2012-04-07 22:52:51

标签: eclipse junit swt swtbot

所以我正在使用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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可能需要将测试作为JUnit插件测试运行。你试过了吗?

答案 1 :(得分:0)

所以事实证明答案是这样的(堆栈溢出的一个很好的优点是我实际上在其他地方解决了这个问题,记得我有类似的问题,然后不得不回到stackoverflow来提醒自己的细节)

SWTBot没有在UI线程中运行,因此空指针错误,我必须做的就是有效地使用:

Display display = bot.getDisplay();
display.syncExec(objectThatdoesthethingiwanttogetdoneintheUIthread);
System.out.println(objectThatdoesthethingiwanttogetdoneintheUIthread.results);

......这让事情变得有效......