Я пытался протестировать свое приложение 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;
}
}