我正在开发android库模块,我想在我的模块中测试独立的活动。我是按照文章的内容 https:/medium.comandroiddevelopers write-once-run-everywher-tests-on-android-88adb2ba20c5。 要用roboelectric和androidx测试与espresso。我最近将匕首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)
}
}
这工作非常好,我不想让底层应用使用匕首2。
现在我想在不依赖底层应用程序或应用程序类的情况下测试我的Activity。我怎样才能在活动中注入模拟ResourceProvider?
许多选项中的一个是