Я работаю над модулем библиотеки Android и хочу протестировать автономную активность в своем модуле. Я следил за статьей https://medium.com/androiddevelopers/write-once-run-everywhere-tests-on-android-88adb2ba20c5 для использования теста roboelectric и androidx с эспрессо. Недавно я представил dagger 2 в своем библиотечном проекте.
При этом моя активность выглядит так:
class XYZLibBaseActivity : AppCompatActivity(){
@Inject
lateinit var resourceProvider: ResourceProvider
override fun onCreate(savedInstanceState: Bundle?) {
//creating the dagger component
DaggerXYZLibComponent.factory().create(application).inject(this)
super.onCreate(savedInstanceState)
}
}
My component declaration is
@Component(modules = [ResourceProviderModule::class])
interface XYZLibComponent{
@Component.Factory
interface Factory{
fun create(@BindsInstance application: Application):XYZLibComponent
}
fun inject(xyzLibBaseActivity: XYZLibBaseActivity)
}
and dagger module is
@Module
class ResourceProviderModule {
@Provides
fun provideResourceProvider(application: Application): ResourceProvider{
return ResourceProviderImpl(application.applicationContext)
}
}
Это прекрасно работает, и я не хочу, чтобы базовое приложение использовало кинжал 2.
Теперь я хочу проверить свою активность, не завися от базового приложения или класса приложения. Как я могу внедрить макет ResourceProvider в действие?