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

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

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

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

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

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

EDIT2: есть ли фреймворк, поддерживающий JUnit4?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
16
0
11 660
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Ответ принят как подходящий

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

Используя SpringDM, я просто получаю следующее: junit.framework.AssertionFailedError: Exception in constructor: testOSGiStart (java.lang.NoClassDefFoundError: org / apache / commons / logging / LogFactory Есть идеи? Я добавил общее ведение журнала в путь сборки, Кстати.

fluffels 06.10.2008 15:38

Кроме того, SpringDM, похоже, не поддерживает JUnit4, это правильно?

fluffels 06.10.2008 15:39

NoClassDefFoundError возникает, когда jvm не может найти файл .class во время выполнения, хотя он был доступен во время компиляции. Так что это не ошибка SpringDM, вам просто нужно снова создать свой проект. Если вы используете сборку maven через maven, или если в ur eclipse включена настройка автоматической сборки, просто внесите небольшие изменения в java-файл ur и сохраните его. После этого U не получит эту ошибку.

Sandeep 06.09.2016 09:43

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

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

Это больше похоже на тестирование подключаемых модулей eclipse. Мой вопрос был непонятным?

fluffels 06.10.2008 15:27

Давным-давно, но для полноты: плагины Eclipse представляют собой пакеты OSGi, поэтому вы можете тестировать пакеты OSGi с помощью простого Eclipse SDK.

Rafael Chaves 12.11.2010 04:05

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

Спасибо, но мне не нужно тестировать компоненты графического интерфейса или плагины Eclipse.

fluffels 06.10.2008 15:24

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

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

Ваше здоровье, Тони

Мммм ... Кажется, Maven не может найти Pax Drone, и я не могу найти никаких альтернативных репозиториев, упомянутых в вашей ссылке. Любая помощь?

fluffels 06.10.2008 15:22

Спасибо за указатель. Я только что обновил сайт для этого. К вашему сведению: вы можете найти это здесь: repository.ops4j.org/maven2

Toni Menzel 14.10.2008 15:01

Похоже, сайт не работает. Кто-нибудь еще пользуется этим фреймворком?

User1 23.08.2011 21:30

Похоже, что Pax Exam - это новая версия, см. Ответ @ l10i.

rescdsk 11.10.2011 02:00

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

Совсем недавно вам стоит взглянуть на Pax Exam: http://team.ops4j.org/wiki/display/paxexam/Pax+Exam

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

Их сайт сильно не работает. Сайты GitHub: Экзамен Pax 1, Экзамен Pax 2, Учебник для экзамена Pax 2

rescdsk 30.11.2011 00:11

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://github.com/effectiveosgi

Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавить контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно есть, а затем процитируйте наиболее релевантную часть страницы, на которую вы ссылаетесь. если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены.

heather 08.08.2018 23:05

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

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

Другие вопросы по теме