Тестирование OSGi - PullRequest
       44

Тестирование OSGi

16 голосов
/ 16 сентября 2008

В настоящее время я работаю над новой системой контроля версий в рамках проекта последнего года обучения в университете. Идея состоит в том, чтобы сделать его легко адаптируемым и подключаемым.

Мы используем инфраструктуру OSGi (реализация Equinox) для управления нашими плагинами. Моя проблема в том, что я не могу найти простой и удобный в использовании метод для тестирования пакетов OSGi.

В настоящее время я должен собрать пакет, используя Maven, а затем выполнить тестовый жгут. Я ищу что-то вроде тестера JUnit для Eclipse, так как это сэкономит мне кучу времени.

Существует ли быстрый и простой способ тестирования комплектов OSGi?

РЕДАКТИРОВАТЬ: мне не нужно что-то для тестирования подключаемых модулей Eclipse или компонентов GUI, только пакеты OSGi.

EDIT2: существует ли какая-либо инфраструктура, поддерживающая JUnit4?

Ответы [ 12 ]

12 голосов
/ 17 сентября 2011

В последнее время вы должны взглянуть на экзамен Pax: http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

Это текущие усилия в OPS4J, связанные с тестированием.

6 голосов
/ 15 ноября 2011

Вот некоторые инструменты, которые еще не упомянуты:

  • Я использую Tycho , который является инструментом для использования Maven для создания плагинов Eclipse. Если вы создаете тесты внутри своих собственных плагинов или фрагментов плагинов, Tycho может запускать каждый набор тестов в своем собственном экземпляре OSGi со всеми необходимыми зависимостями. Intro и дополнительная информация . Это работает очень хорошо для меня.

  • jUnit4OSGI выглядит просто. Вы создаете подклассы OSGiTestCase и получаете методы, такие как getServiceReference() и т. Д.

  • Pluginbuilder , система автономной сборки для пакетов OSGi / подключаемых модулей Eclipse, имеет тестовую среду , называемую Autotestsuite . После запуска сборки тесты выполняются в контексте среды OSGi. Но, похоже, его не поддерживали в течение нескольких лет. Я думаю, что многие проекты Eclipse переходят с Pluginbuilder на Tycho.

  • Другой вариант - запустить экземпляр контейнера OSGi в пределах вашего модульного теста , который вы запускаете напрямую, как объяснено здесь .

  • Вот кто-то, кто написал маленький сборщик тестов связки , который ищет тесты JUnit (3) и запускает их.

6 голосов
/ 30 сентября 2008

На OPS4J существует специальная платформа тестирования OSGi с открытым исходным кодом (ops4j.org), которая называется Pax Drone .

Возможно, вы захотите взглянуть на Pax Drone ([http://wiki.ops4j.org/confluence/x/KABo]), который позволяет использовать в своих тестах все версии Felix, а также Equinox и Knopflerfish.

Ура, Toni

6 голосов
/ 16 сентября 2008

Spring Dynamic Modules имеет отличную поддержку для тестирования OSGi-пакетов .

3 голосов
/ 22 сентября 2008

Eclipse имеет тип конфигурации запуска для запуска тестов JUnit в контексте приложения Eclipse (т.е. OSGi):

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm

1 голос
/ 15 октября 2012

Я думаю, что мы столкнулись с той же проблемой, и мы нашли свое собственное решение. Существуют разные части решения:

  • junit4runner, который перехватывает все службы OSGi, для которых определено специальное свойство. Он запускает эти перехваченные сервисы с движком JUnit4. Аннотации JUnit следует размещать в интерфейсах, которые реализуют сервисы.
  • Плагин maven, который запускает среду OSGi (пользовательская среда может быть создана как зависимость maven) и запускает модульные тесты в жизненном цикле maven интеграции-теста.
  • Пакет развертывания OSGi. Если это будет добавлено в ваш OSGi-контейнер, откроется простое всегда открывающееся окно, где вы можете удалить свои папки проекта (из Total Commander или из Eclipse). Это затем повторно развернет этот пакет.

С помощью инструментов вы можете создавать TDD, а письменные тесты всегда выполняются на этапе интеграции maven. Рекомендуется использовать eclipse с m2e и maven-bundle-plugin, так как в этом случае цель / classes / META-INF / MANIFEST.MF создается заново, как только вы сохраняете класс в исходном коде, чтобы вы могли перетащить проект и удалить в окне развертывания. Пакеты OSGi, которые вы разрабатываете, не должны иметь какой-либо специальной функции (например, быть подключаемым модулем Eclipse или чем-то подобным).

Целое решение - OpenSource. Вы можете найти учебник на http://cookbook.everit.org

1 голос
/ 01 июня 2012

Среда выполнения теста ProSyst - полезный инструмент тестирования для пакетов OSGi. Он также поддерживает тесты JUnit как одну из возможных тестовых моделей.

1 голос
/ 21 мая 2012

Для модульных тестов используйте инфраструктуру EasyMock или создайте собственные реализации необходимых интерфейсов для тестирования.

1 голос
/ 04 ноября 2008

Договор - это структура контракта (тестирования), которая довольно академична, но имеет несколько хороших идей. Есть статьи, которые опубликованы на нем, и люди в настоящее время работают над его улучшением.

1 голос
/ 22 сентября 2008

Если вам нужно протестировать компоненты GUI, которые я обнаружил SWTBot выполняет свою работу.

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