В настоящее время я думаю о том, "Как создать компонент OSGi, чтобы он легко писал тесты для него с такими фреймворками, как jUnit и Mockito".
Отказывание взаимосвязей между пакетами довольно просто, так как OSGi усиливает DIP (принцип инверсии зависимостей) и методы инжектора (например, setter), как правило, существуют.
Но как насчет связывания внутренних зависимостей?
Например, посмотрите этот случай. Теперь я хочу привести его в контекст OSGi... Изображение мы хотим предоставить любой сетевой протокол как декларативную услугу на платформе OSGi и хотим писать модульные тесты для тестирования нижнего сетевого кода, который напрямую взаимодействует с сокет.
Если бы мы реорганизовали создание сокетов в отдельный, но все еще пакетный класс POJO (Plain Old Java Object), как мы должны вставлять его в реализацию протокола?
- В unit test мы могли бы просто использовать метод setter, но кто будет делать это в контейнере OSGi для нас?
- Подклассы тестируемого класса и перезапись метода-создателя будут работать только в том случае, если тестируемый класс не объявлен окончательным.