Вопрос

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

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

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

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

Редактировать:Мне не нужно что-то для тестирования плагинов Eclipse или компонентов GUI, только пакеты OSGi.

РЕДАКТИРОВАТЬ 2:Существует ли какой-нибудь фреймворк, поддерживающий JUnit4?

Это было полезно?

Решение

Spring Dynamic Modules обладает отличной поддержкой для тестирование пакетов OSGi.

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

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

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

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

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

Твое здоровье, Тони

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Все решение является открытым исходным кодом.Вы можете найти учебное пособие по адресу http://cookbook.everit.org

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

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

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

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

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

https://github.com/effectiveosgi

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top