Что является причиной ошибки доступа к неверному потоку SWT при попытке протестировать приложение SWT? - PullRequest
0 голосов
/ 16 сентября 2018

Я пытался протестировать свое приложение SWT. У меня есть класс AppViewImplTest JUnit, написанный ниже. Тесты проходят без каких-либо ошибок или сбоев в Eclipse, но при запуске mvn clean install из командной строки они отображаются как ошибка доступа к неверному потоку SWT. В нем также упоминается «*** ПРЕДУПРЕЖДЕНИЕ: отображение должно быть создано в главном потоке из-за ограничений Какао». Я уверен, что просто что-то упускаю, но интересно, кто-то может указать на это, что имеет больше опыта с этим? Это происходит в тот момент, когда я звоню getShell() в setUp(). Я хотел бы услышать некоторое понимание. Я видел примеры этой работы раньше, и я искал ответы на другие вопросы, но ничего по тестированию. Заранее спасибо.

public class AppViewImplTest {
    private Shell shell;
    private Display display;
    private AppViewImpl testAppViewImpl;

    /**
     * Runs before the tests to get a new Shell.
     */
    @Before
    public void setUp() throws Exception {
        shell = getShell();
    }

    /**
     * Test to ensure that {@link IllegalArgumentException} is thrown when the
     * parent shell is null.
     */
    @Test(expected = IllegalArgumentException.class)
    public void testErrorWhenAppViewShellIsNull() {
        new AppViewImpl(null);
    }

    /**
     * Test to ensure that the minimum size is set with constructor.
     */
    @Test
    public void testShellMinimumSizeIsSet() {
        testAppViewImpl = new AppViewImpl(shell);
        assertEquals(shell.getSize(), shell.getMinimumSize());
    }

    private Shell getShell() {
        if (shell != null && shell.isDisposed()) {
            shell = null;
        }
        Display currentDisplay = (this.display != null) ? this.display : Display.getCurrent();
        if (currentDisplay != null && !currentDisplay.isDisposed()) {
            Shell active = currentDisplay.getActiveShell();
            if (active != null) {
                shell = new Shell(active);
            }
        }
        if (shell == null) {
            shell = new Shell(currentDisplay);
        }
        return shell;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...