2012-02-23 2 views
0

Для нового проекта я смотрю, что OSGi может предложить с точки зрения инъекции зависимостей, и я вроде как iPOJO (чистая аннотация, а не поддержка xml).Зависимость в OSGi от тестирования

Однако, с точки зрения тестирования, Blueprint может быть лучше, так как для разных тестовых случаев (функциональное тестирование) может быть достаточно переписать конфигурацию плана, и сразу же будет введена другая услуга.

Что вы думаете по этому поводу? Могу ли я отказаться от XML-ориентированного плана (я ненавижу XML) в пользу iPOJO, не жертвуя гибкостью в плане тестирования?

ответ

1

Да. Ты можешь. Я не думаю, что ты что-нибудь принижешь. На самом деле iPOJO является более мощным, чем план, он поддерживает такие функции, как «Ввод в поле», «Управление жизненным циклом службы» и «Администратор конфигурации» - в котором Blueprint не работает (reference).

Blueprint, однако, является частью OSGi Enterprise Specification, если это имеет значение.

Я не работал с Blueprint, но просто смотрю на его спецификацию - если вы не являетесь парнем java beans, я бы держался подальше. Кроме того, я предпочитаю iPOJO над DS, поскольку во многих случаях он кажется намного более умным, и он просто делает правильные вещи.

+0

Есть ли у вас какие-либо документы о том, как тестировать приложения OSGi на основе iPOJO? Благодаря! – Zoltan

+0

Я думаю, это зависит от того, какое тестирование вы хотели бы сделать. Такие вещи, как интеграционное тестирование, были бы намного сложнее, но опять же, с iPOJO, я бы не стал проверять это, так как я бы доверял структуре. Если вы имеете в виду модульное тестирование, тогда вам поможет какая-то насмешливая структура (этот, по-видимому, подходит для OSGi: http://easymock.org/). – drozzy

0

Что касается модульного тестирования iPOJO, вы можете использовать конструктор (или инъекции конструктора), чтобы ввести фиктивные услуги и эффективно проверить поведение компонента:

Так два варианта:

  • либо у вас есть дополнительный конструктор для ввода зависимостей вам нужно использовать mocks
  • или ваш компонент использует конструктор , а затем вы просто вызываете конструктор с макетными объектами

Если вы пытаетесь выполнить интеграционное тестирование, вы можете просто использовать экзамен pax и развернуть свой пакет (в дополнение к iPOJO).

Смежные вопросы