Android Dagger2 JUnit сгенерировал класс TestComponent, не распознаваемый / распознаваемый в TestClass - PullRequest
1 голос
/ 23 апреля 2020

Бит введения здесь

  • Проект содержит core и app компоненты
  • Некоторые служебные классы помещены в core компонент, чтобы упростить тесты JUnit в других модулях
  • Кинжал используется во всех модулях

Вот структура проекта

core
 ___src
 ______main
 _________com.core
 ____________CoreComponent
 ______test
 _________com.core.test
 ____________SomeMockData

 ___build/generated/source/kapt
 ______coreDebug
 _________com.core
 ____________DaggerCoreComponent

app
 ___src
 ______main
 _________com.foo
 ____________AwesomeComponent
 ____________ConcreteClassA
 ______test
 _________com.foo
 ____________TestAweseomeComponent
 ____________MyJUnitTest

 ___build/generated/source/kapt
 ______appDebug
 _________com.foo
 ____________DaggerAwesomeComponent
 ______appDebugUnitTest
 _________com.foo
 ____________DaggerTestAwesomeComponent

В приложении build.gradle ядро ​​добавлено как основная и тестовая зависимость

implementation project(':core')
testImplementation project(':core')

Dagger 2 - добавлен для codegen, и он успешно генерирует DaggerTestComponent

testImplementation dagger.xx  
kaptTest daggerProcessor.xx

Здесь есть две проблемы

  1. SomeMockData помещенный внутрь core/test недоступен в app/test источниках (хотя IDE не показывает никакой ошибки). Во время работы MyJUnitTest выдает ошибку.

  2. Сгенерировано DaggerTestAwesomeComponent не обнаруживает TestAwesomeComponent, а DaggerTestAwesomeComponent не отображается в MyJUnitTest. Как мы знаем, сгенерированный DaggerAwesomeComponent работает просто отлично.

ПРИМЕЧАНИЕ. Для простоты я исключил классы инжекторов, также генерируется MyJUnitTest_MembersInjector. Как у меня @Inject в тестовом классе

...