Тесты SWTbot не работают должным образом

Поэтому я тестирую плагин eclipse с SWTbot и не получаю ожидаемого результата - когда я сокращаю тест, оказывается, что проблема не в боте, а в некотором коде, который я скопировал напротив другой части программы (где она была полностью функциональной)

Следующий код...

@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 ответа

Решение

Таким образом, получается, что ответ таков (также хорошее преимущество stackru - то, что я фактически решил это где-то еще, вспомнил, что у меня была похожая проблема, а затем мне пришлось вернуться к stackru, чтобы напомнить себе о деталях)

SWTBot не работает в собственном потоке пользовательского интерфейса, следовательно, ошибки нулевого указателя, что я должен был сделать, это эффективно использовать:

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

... и это заставило вещи работать...

Вам может понадобиться запустить тест как плагин JUnit. Вы пробовали это?

Другие вопросы по тегам