Хорошо, у меня все еще есть еще один вопрос. ;) В настоящее время я регистрирую фабрику сервисов, используя BundleContext.registerService. Есть ли возможность позволить инфраструктуре внедрять другие сервисы в экземплярах, созданных моей собственной фабрикой?
час думаю о«Как спроектировать компонент OSGi, чтобы было легко писать для него тесты с такими фреймворками, как jUnit и Mockito».
Пересмешивать зависимости между пакетами довольно легко, так как OSGi усиливает DIP(Принцип обращения зависимостей) и инжекторные методы (например, сеттер) обычно существуют.
Но как насчет внутренних зависимостей пакета?
Например, посмотрите наэтот случай, Теперь я хочу привести его в контекст OSGi ... Изображение, которое мы хотим предоставить в качестве декларативного сервиса на платформе OSGi для любого сетевого протокола, и хотим написать модульные тесты для тестирования нижнего сетевого кода, который напрямую взаимодействует с объект сокета.
Если бы мы реорганизовали создание сокета в отдельный, но все еще связывающий внутренний POJO(Обычный старый Java-объект) класс, как мы должны внедрить его в реализацию протокола?
В модульном тесте мы могли бы просто использовать метод установки, но кто сделает это в контейнере OSGi?Подклассы тестируемого класса и перезапись метода-создателя будут работать только в том случае, если тестируемый класс не объявлен как final.