Я запускаю тесты пользовательского интерфейса для приложения RCP с помощью SWTBot, который отлично работает при запуске тестов в eclipse IDE. Теперь я хочу запустить тесты в maven, что пока тоже работает. К сожалению, через цепочку зависимостей org.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ide org.eclipse.ui.ide также присутствует в приложении, которое запускает тесты. В этом пакете присутствуют некоторые неожиданные пункты меню, и этот комплект следует исключить во время выполнения теста. Как этого добиться?

При запуске тестов в eclipse я просто исключаю пакет org.eclipse.ui.ide из конфигурации запуска теста SWTBot, и все работает как положено.

3
Alexander Hansen 10 Сен 2012 в 13:13

1 ответ

Лучший ответ

Цепочка зависимостей org.eclipse.swtbot.eclipse.finder --> org.eclipse.ui.editors --> org.eclipse.ui.ide содержит необязательную ссылку: для первого пакета требуется только второй пакет посредством необязательного импорта пакета org.eclipse.ui.texteditor. Вот почему вы можете удалить пакет o.e.ui.ide из тестовой среды выполнения, запущенной из Eclipse, и o.e.swtbot.eclipse.finder по-прежнему будет работать.

В нормальных условиях вы можете добиться того же в среде выполнения теста Tycho, убедившись, что необязательная зависимость не находится в целевой платформе:

<plugin>
   <groupId>org.eclipse.tycho</groupId>
   <artifactId>target-platform-configuration</artifactId>
   <version>${tycho-version}</version>
   <configuration>
      <filters>
         <filter>
            <type>eclipse-plugin</type>
            <id>org.eclipse.ui.ide</id>
            <removeAll />
         </filter>
      </filters>
   </configuration>
</plugin>

Но вот почему это не работает в вашем конкретном случае: когда вы используете программу тестирования пользовательского интерфейса (useUIHarness=true), Тихо безоговорочно добавляет пакет org.eclipse.ui.ide.application в качестве дополнительного требования к ваша тестовая среда выполнения. Этот пакет имеет необязательное требование к org.eclipse.ui.ide, поэтому с конфигурацией целевой платформы, приведенной выше, вы получите ошибку «не удается разрешить зависимость» с жалобой на неудовлетворенное ограничение org.eclipse.ui.ide.application.

Итак, я не думаю, что в вашем случае есть решение, но я считаю это ошибкой в ​​Tycho. Тесты ботов SWT выполняются в Eclipse, поэтому они также должны выполняться в Tycho. Очевидно, Eclipse не нуждается в пакете org.eclipse.ui.ide.application (иначе он перестал бы работать, если бы вы отменили выбор пакета org.eclipse.ui.ide), так что Тихо он тоже не нужен. Отправьте отчет об ошибке для Tycho и приложите минимальный образец проекта, в котором воспроизводится проблема, чтобы я мог это исправить.

5
oberlies 10 Сен 2012 в 17:31
К сожалению, это не решает проблему, зависимость не является необязательной - org.eclipse.swtbot.eclipse.finder предоставляет возможности тестирования для редакторов, представлений и рабочей среды, что также является причиной того, что я не могу удалить прямую зависимость. Но большое спасибо за ответ, я думаю, что эта функция фильтра может быть полезна в других ситуациях, и я не знал об этом раньше.
 – 
Alexander Hansen
10 Сен 2012 в 15:25
Я получил ошибку разрешения зависимости. Я думаю, было бы здорово дать зависимости такую ​​же область видимости, как у зависимости maven. Я даже попытался повторно представить его как зависимость maven, использовал pomConsider и установил область действия на provided, что по-прежнему приводит к ошибке разрешения зависимости.
 – 
Alexander Hansen
10 Сен 2012 в 16:24
К вашему сведению: браузер Игоря p2 - отличный инструмент для анализа транзитивных зависимостей p2 / OSGi. Он даже запускается прямо со связанного сайта.
 – 
oberlies
10 Сен 2012 в 17:39
@CodeSeavers: Спасибо за тестирование моего первоначального ответа - теперь я понял, почему он не работает, и соответствующим образом отредактировал ответ.
 – 
oberlies
10 Сен 2012 в 18:10
Большое спасибо! На данный момент я переписал тест, чтобы он работал в среде CI (maven), и сообщу об ошибке, как только я найду время для компиляции образца проекта.
 – 
Alexander Hansen
10 Сен 2012 в 18:30