我有一个自定义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)
方法编写测试。
我无法弄清楚如何模拟listview以便我可以继续测试(ArgumentCaptors和东西)?
答案 0 :(得分:1)
我会给列表字段包本地访问并直接在test中模拟它。对于我们的应用程序,它已经可以访问包,因为我们使用 Butterknife
答案 1 :(得分:1)
@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));
}
}