Запуск JUnit-тестов, использующих SWT-Display, не выполняется на Jenkins - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть несколько JUnit-тестов, использующих текущий Display для создания нескольких элементов управления (например, TreeViewer).Локально, что работает нормально, без проблем.Когда я фиксирую эти тесты и jenkins запускает тест, я получаю неудавшийся тест для каждого теста, который использует Display.

Мой модульный тест использует переменную display следующим образом:

@Test
public void testUtils() {
    Display display = Display.getCurrent();
    Shell shell = new Shell(display, SWT.NONE);
    // org.eclipse.swt.widgets.Composite composite = new
    // org.eclipse.swt.widgets.Composite(
    // shell, SWT.NONE);
    TreeViewer viewer = new TreeViewer(shell, SWT.MULTI | SWT.H_SCROLL
            | SWT.V_SCROLL);

Журнал ошибок, который генерирует jenkins:

Time elapsed: 0.13 sec  <<< ERROR!
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
    at org.eclipse.swt.SWT.error(SWT.java:4109)
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:902)
    at org.eclipse.swt.widgets.Display.create(Display.java:890)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:154)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:499)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:490)
    at org.eclipse.swt.widgets.Display.getDefault(Display.java:1693)
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:260)
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:253)
    at 

Что-то не так с тем, как я использую Display в своих тестах?Он работает, когда выполняется на моей локальной машине

Ответы [ 2 ]

0 голосов
/ 03 февраля 2014

Вы можете попробовать следующие две вещи:

  1. выполнить команду "xhost" или "xhost +" из вашего терминала.

  2. выполнить команду "xhost "или" xhost + "from, терминал Дженкинса.

0 голосов
/ 09 декабря 2011

То, как вы используете дисплей, выглядит нормально для меня. Вероятно, ошибка связана с тем, что на вашем сервере не запущен Gnome, поэтому SWT не может создать отображение, когда вы об этом попросите.

UPDATE

Я только что нашел недавнее сообщение в блоге, которое объясняет, что вам нужно сделать, чтобы выполнить тесты SWT UI на автономном сервере более подробно. Хотя представленные шаги предназначены для Hudson, они должны быть применимы и к Jenkins.

Все должно сводиться к этим двум шагам:

  • Проверка Запустите Xvnc во время сборки (и не пытайтесь проверить снимок экрана, это не работает)

  • Добавить Выполнить оболочку Действие сборки перед запуском ваших тестов с metacity –replace –sm-disable &

Смотрите связанные сообщения в блоге для скриншотов и более подробной информации.

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