Android Модульное тестирование с помощью Dagger 2 - нет доступа к TestAppComponent - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь писать модульные тесты, используя Robolectric для моего уровня представления (в основном фрагменты). Я зависим от Dagger 2, поэтому я создал следующий тестовый компонент, расширив свой существующий компонент приложения:

@Singleton
@Component(
    modules = [
        AndroidInjectionModule::class,
        AndroidSupportInjectionModule::class,
        TestAppModule::class,
        TestModule::class
    ]
)
interface TestAppComponent : AppComponent {
    fun into(dashboardFragment: DashboardFragmentTest)
}

Я пытаюсь создать компонент в моем тесте следующим образом:

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.P])
class DashboardFragmentTest {

    private lateinit var fragmentScenario: FragmentScenario<DashboardFragment>

    @Before
    fun init() {
        val component = DaggerTestAppComponent.builder()
            .build()
        component.into(this)

        fragmentScenario = launchFragmentInContainer<DashboardFragment>()
    }

    @Test
    fun `some test`() {
        //...
    }
}

И я получаю следующую ошибку:

enter image description here

Итак, он жалуется на невозможность доступа к TestAppComponent. Вы можете увидеть ошибку в сгенерированном компоненте кинжала:

enter image description here

У вас есть идеи, что может вызвать это?

...