我有一个自定义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));
}
}