Динамическое связывание с кинжалом 2

У меня проблемы с переносом приложения для Android из Dagger в Dagger2,

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

Например, у меня есть NetworkingModule который обеспечивает HttpTransport и ServerConnector, Для некоторых тестов я просто высмеиваю слой http, для других - ServerConnectorи другие тесты используют классы релизов для тестирования интеграции с реальным тестовым сервером.

Эти тесты могут быть запущены на всех версиях сборки (отладка, выпуск,...).

Я нашел только описания Dagger2 которые устанавливают одну статическую конфигурацию внедрения для каждого типа сборки - т.е. компонент выпуска для привязки реальных классов и компонент отладки для привязки одного набора макетов.

Мне нужно найти способ, чтобы тестовые случаи заменили модули на этапе запуска приложения.

Как мне этого добиться? В моих мыслях я всегда застреваю, когда приложение запускает построение графа, для которого оно должно использовать Компонент, который является реализацией определенного интерфейса, который имеет статическую аннотацию своих модулей???

Спросить по-другому: возможно ли собрать несколько модулей в одной сборке, которые обеспечивают одинаковые инъекции? Как бы я тогда вводил с правильным модулем во время выполнения?

Может кто-нибудь, пожалуйста, напишите мне решение для моего примера NetworkingModule,

Кстати: я активно использую Espresso, Robolectric, а также Mockito,

Спасибо.

1 ответ

Решение

Нашел решение:

Мне не нужно создавать конкретные компоненты или модули.

Мои модули просто обрабатывают делегатов, которые я внедряю и устанавливаю для инъекций при тестировании. Это очень дешево для релизных сборок. А для тестирования я могу даже немного подумать об удобных функциях.

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