我正在研究 android 库模块,我想在我的模块中测试独立活动。我正在关注文章https://medium.com/androiddevelopers/write-once-run-everywhere-tests-on-android-88adb2ba20c5使用 roboelectric 和 androidx 测试与 espresso。我最近在我的图书馆项目中引入了 dagger 2。
这样我的 Activity 看起来像这样:
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)
}
}
这工作得很好,我不希望底层应用程序使用 dagger 2。
现在我想在不依赖底层应用程序或应用程序类的情况下测试我的活动。如何在活动中注入模拟 ResourceProvider?