ошибка: [Dagger / MissingBinding] @ com.zhixin.wedeep.common.di.LoginApi okhttp3.OkHttpClient не может быть предоставлен без метода с аннотацией @ Provides

Когда я выполнил свой тестовый код с рукоятью, я получил ошибку выше. Что довольно странно, потому что в моем приложении все работает хорошо.

Ниже приведен мой тестовый код.

@HiltAndroidTest
@RunWith(AndroidJUnit4::class)
@LargeTest
class TestHomePageFragment {


    private val intent = Intent(ApplicationProvider.getApplicationContext(), AudioPlayerActivity::class.java).apply {
        flags = Intent.FLAG_ACTIVITY_NEW_TASK
        putExtra(HomePageArouterConstants.KEY_ID,"1")
    }
    @get:Rule
     val activityRule:ActivityScenarioRule<AudioPlayerActivity> = activityScenarioRule(intent)
    @get:Rule
    var hiltRule = HiltAndroidRule(this)

    @Before
    fun init(){
        hiltRule.inject()
    }

    @Test
    fun testVote(){
//        Assert.assertEquals(1,1)
        val scenario = activityRule.scenario
        onView(withId(R.id.linear_layout_like)).perform(click())
    }

}

Мой компонентный модуль

@Module
@InstallIn(ApplicationComponent::class)
object NetWorkModule {


    @Provides
    @Singleton
    fun provideOkHttpClient(interceptor: HttpLoggingInterceptor): OkHttpClient =
            OkHttpClient.Builder()
                    .addInterceptor(HeaderInterceptor())
                    .addInterceptor(interceptor)
                    .addNetworkInterceptor(StethoInterceptor())
                    .build()

    @Provides
    @Singleton
    fun provideLoggingInterceptor() =
            HttpLoggingInterceptor().apply { level = if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE }

    @Provides
    @Singleton
    fun provideGson(): Gson = Gson()

    @Provides
    @Singleton
    fun provideGsonConverterFactory(gson: Gson): GsonConverterFactory =
            GsonConverterFactory.create(gson)


    @CoroutineScropeIO
    @Provides
    fun provideCoroutineScopeIO() = CoroutineScope(Dispatchers.IO)
}

Есть идеи по этой проблеме?


person Cyrus    schedule 21.07.2020    source источник


Ответы (1)


Нет, это не странно, потому что вы пытаетесь использовать dagger-hilt modules с обычным Activity, не помеченным @AndroidEntryPoint.

Обратитесь к этому руководству, поскольку в нем объясняется, как тестировать фрагменты с рукоятью кинжала: https://www.youtube.com/watch?v=k4zG93ogWFY&t

person Andrew    schedule 05.09.2020