在Android中测试AutoCompleteTextView
我正在使用Robolectric测试我的Android应用程序,我遇到了一个问题:在我的MainActivity中,我有以下代码:在Android中测试AutoCompleteTextView,android,junit,robolectric,Android,Junit,Robolectric,我正在使用Robolectric测试我的Android应用程序,我遇到了一个问题:在我的MainActivity中,我有以下代码: private DelayAutoCompleteTextView textview_departure; <snip> textview_departure.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<
private DelayAutoCompleteTextView textview_departure;
<snip>
textview_departure.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
JsonPlace place = (JsonPlace) arg0.getItemAtPosition(position);
departureName = place.getPlaceName();
textview_departure.setText(departureName);
uniqueDepartureStation = place.getID();
}
});
private DelayAutoCompleteTextView textview\u离开;
textview_deposition.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
JsonPlace=(JsonPlace)arg0.getItemAtPosition(position);
departureName=place.getPlaceName();
textview_department.setText(departureName);
uniqueDepartureStation=place.getID();
}
});
DelayAutoCompleteTextView是从中复制的。
无论如何,我的问题是为了测试我的MainActivity,我需要从我的测试类执行上面的代码。不幸的是,Robolectric中没有实现任何ShadowAutoCompleteTextView类,因此我不确定如何单击AutoCompleteTextView提供的列表中的项目
关于如何启动和运行此测试,有什么建议吗 这完全取决于您需要执行的操作。阴影是用来帮助测试的。它们有时帮助初始化视图或从中获取/设置否则无法访问的数据。这并不意味着没有阴影你什么都做不了 如果您能够在测试中构建DelayAutoCompleteTextView而不会出现问题,并且可以使用普通方法从中访问所需的数据,那么您就可以不使用任何阴影。只需使用findviewbyd()找到它,然后像平常一样使用它。要在任何视图上执行单击,可以调用方法callOnClick
如果您无法完成所需的操作,您可以始终为此视图创建自己的自定义阴影,如下所述:谢谢您的回复。我研究了在不使用阴影对象的情况下触发onItemClick,并认为这可能是一个开始:AutoCompleteTextView textview\u detairation=(DelayAutoCompleteTextView)activity.findViewById(R.id.text\u detairation);textview_-defation.getOnItemClickListener().onItemClick(null,textview_-defation,0,0);“null”必须由工作的父引用替换,但我还没有找到正确设置此参数的方法。有什么建议吗?我建议的是textview\u deposition.callOnClick()。这是视图类本身中的一个方法。如果textview有一个OnClickListener,则该方法可以工作,但不能在OnItemClickListener上工作。