对测试View(Activity,Fragment)有以下疑问。第一种方法是使用robolectric测试视图,模拟Android组件,如下面的代码:
private void setUp() {
fragment = new CustomFragment();
activity = Robolectric.setupActivity(MainActivity.class);
}
@Test
public void testOnCreateView() {
fragment.onCreateView(LayoutInflater.from(activity), (ViewGroup) activity.findViewById(R.id.container), null);
verify(repoInfoPresenter).onCreateView(null);
}
不喜欢这种方法,导致此测试执行需要很长时间。在我看来,单元测试应该在每个合并请求上执行,因此它们不应该像那样的测试那么慢。
另一种变体是使用Espresso编写Instrumentation测试。我知道它已经需要很长时间和真实的设备,但我不认为这个测试应该像在jvm上运行的测试那样经常执行。
或许对于我不知道的片段或活动,有一些神奇的变体来模拟(make stubs)?