Подтвердить что ты не робот

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

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

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

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

Есть ли быстрый и простой способ тестирования пакетов OSGi?

EDIT: мне не нужно что-то тестировать с подключаемыми модулями Eclipse или компонентами графического интерфейса, а также с пакетами OSGi.

EDIT2: Есть ли какая-то среда, поддерживающая JUnit4?

4b9b3361

Ответ 3

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

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

Cheers, Toni

Ответ 4

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

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

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

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

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

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

Ответ 11

В течение последних двух лет Tycho - новая система построения Maven для OSGi - стала довольно популярной среди Eclipse Foundation. Эта структура также включает в себя метод использования Maven Surefire для тестирования пакетов OSGi в отдельных тестовых стендах...

Ответ 12

Полагаю, есть много способов протестировать компоненты OSGi. Одним из способов тестирования является использование Robot Framework. Я сделал свои тесты с помощью Robot Framework и установил удаленные библиотеки в OSGi или попросил их общаться с компонентами OSGi-test через сокеты, и робот мог общаться с этими модулями и запускать тесты через них.

Итак, в основном ваши OSGi-модули должны иметь интерфейсы, которые что-то делают и выдают какой-то результат. Итак, в моей настройке у меня были тестовые компоненты, которые выполняли бы сервисные вызовы фактическому OSGi-компоненту, а затем была служба прослушивания, которая будет перехватывать события/сервисные вызовы (сделанные тестируемым модулем), и эти результаты могли спросить робота. Таким образом, в основном таким образом вы можете разделить массивную систему на небольшие компоненты и запустить систему в режиме производства/производства, например, в среде, и автоматически протестировать ее на уровне компонентов или протестировать некоторые из реальных компонентов в унисон.

Ответ 13

Как насчет bnd-testing-maven-plugin?

Это позволяет запускать JUnit внутри работающего контейнера, такого как Felix или Equinox. Если вы использовали BNDTools для затмения, это очень похоже, но только без затмения и без пользовательского интерфейса.

https://github.com/bndtools/bnd/tree/master/maven/bnd-testing-maven-plugin

также посмотрите на эффективный архетип для мавена. Это даст вам хорошую отправную точку для создания вашего проекта или просто добавления тестов.

https://github.com/effectiveosgi