
以前使用应用程序级组件和活动组件,只要创建继承活动组件的测试组件,就可以为不是活动的测试类调用inject().
例:
活动组件
@ActivityScope@Component( dependencIEs = ApplicationComponent.class,modules = { NowPlayingActivityModule.class })public interface NowPlayingActivityComponent { voID inject(NowPlayingActivity activity);} 测试类组件
@ActivityScope@Component( dependencIEs = TestApplicationComponent.class,modules = { TestNowPlayingActivityModule.class,ActivityModule.class }) public interface TestNowPlayingActivityComponent extends NowPlayingActivityComponent { voID inject(NowPlayingActivityTest NowPlayingActivityTest);} 测试模块
@Modulepublic class TestNowPlayingActivityModule { private NowPlayingActivityModule NowPlayingActivityModule; public TestNowPlayingActivityModule(NowPlayingActivityModule NowPlayingActivityModule) { this.NowPlayingActivityModule = NowPlayingActivityModule; } @ProvIDes @ActivityScope public ServiceGateway provIDesServiceGateway(ServiceAPI serviceAPI) { return NowPlayingActivityModule.provIDesServiceGateway(serviceAPI); } @ProvIDes @ActivityScope public NowPlayingPresenter provIDesNowPlayingPresenter(NowPlayingInteractor NowPlayingInteractor) { //In order to make sure espresso IDles the vIEw checks,we put the IDlingResource on the presenter. return Mockito.spy(new NowPlayingPresenterImpl_IDlingResource(NowPlayingActivityModule.getNowPlayingviewmodel(),NowPlayingInteractor)); }} 在测试类中
TestNowPlayingActivityComponent mockNowPlayingActivityComponent = DaggerTestNowPlayingActivityComponent.builder() .testApplicationComponent((TestApplicationComponent) mvpExampleApplication.getComponent()) .testNowPlayingActivityModule(new TestNowPlayingActivityModule(NowPlayingActivityModule)) .build();mockNowPlayingActivityComponent.inject((NowPlayingActivity) activity);mockNowPlayingActivityComponent.inject(NowPlayingActivityTest.this);
人们如何访问自动生成的活动模块并在espresso UI Test中使用它们?我希望能够访问像“ServiceGateway”这样的对象.上面的“NowPlayingPresenter”并在测试中使用它们.模拟,间谍或空闲资源.上面例子中我的空闲资源是“NowPlayingPresenter”具体实现,我在每次单独的测试中都会传递给espresso.
解决方法 前几天我设法使用自定义测试运行器进行了一些Hacky方法解决了这个问题.第一件事是拥有一个 TestRunner for faking the Android Application.现在你可以简单地扩展你的主app类并覆盖onCreate(),注入一个返回模拟实例而不是真实实例的 component built especially for testing. 总结以上是内存溢出为你收集整理的android-espresso – AndroidInjector和Espresso全部内容,希望文章能够帮你解决android-espresso – AndroidInjector和Espresso所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)