【发布时间】:2018-05-07 10:01:53
【问题描述】:
我使用 Android MVP 架构,我想测试我的视图。我的项目中有以下代码:
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MainActivityTest {
@Test
public void testDisplay() throws Exception {
MainActivity activity = Robolectric.setupActivity(MainActivity.class);
final Menu menu = Shadows.shadowOf(activity).getOptionsMenu();
assertEquals("Log", menu.findItem(R.id.menu_login).getTitle().toString());
}
}
但是,对于某些第 3 方库,我得到 ExceptionInIntializationError 将其抛出到由 Robolectric 调用的 Activity 的 onResume() 步骤中。
此外,在 Activity 的 onResume() 中,Presenter 的方法被调用,它发出网络请求。
我的问题是:
- 如何模拟第 3 方初始化步骤?我读到了Shadows,但我不知道如何在这个特定场景中使用它们。我应该在
setupActivity(...)通话期间模拟一些东西。 - 如何模拟网络调用?在我的 MVP 代码中,演示者是在 onCreate() 方法中创建的。我应该切换到直接依赖注入模式并重建架构吗?但这种方法会与
Robolectric.setupActivity(MainActivity.class);冲突,因为我需要某种 hook 在 Robolectric 调用期间在 onCreate() 或 onResume() 中注入内容。
【问题讨论】:
标签: android tdd mvp robolectric android-mvp