用robolelectric和Mockito模拟findViewById响应



我有一个自定义ListView,输入CustomListView:

在片段中有:

<com.custom.CustomListView
    android:id="@+id/custom_listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

在这个片段的源代码中,我有

private CustomListView mCustomListView;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mContext = getActivity();
    mCustomListView = mContext.findViewById(R.id.custom_listview);
}

然后有一些方法:

public void doSomethingOnReceivingData(Data data) {
    mCustomListView.someCustomMethod(data);
}

我想为doSomethingOnReceivingData(Data)方法写一个测试。

我不知道如何模拟列表视图,以便我可以继续测试(ArgumentCaptors和东西)?

我会给列表字段包本地访问权,并在测试中直接模拟它。对于我们的应用程序,它已经是包可访问的,因为我们使用Butterknife

@RunWith(MockitoJUnitRunner.class)
public class MainActivityFragmentTest {
    @Mock
    private CustomListView mCustomListView;
    @InjectMocks
    private MainActivityFragment fragment;
    @Test
    public void doSomethingOnReceivingData_callsCustomListView() {
        final String data = "data";
        fragment.doSomethingOnReceivingData(data);
        verify(mCustomListView).someCustomMethod(eq(data));
    }
}

相关内容

  • 没有找到相关文章

最新更新