我正在使用 Robolectric 测试我的 Android 应用程序,我遇到了这个问题:在我的 MainActivity 中,我有以下代码:
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();
}
});
DelayAutoCompleteTextView 复制自 here . 无论如何,我遇到的问题是,为了测试我的 MainActivity,我需要从我的测试类中执行上面的代码。不幸的是,在 Robolectric 中没有实现任何 ShadowAutoCompleteTextView 类,所以我不确定如何单击 AutoCompleteTextView 提供的列表中的项目。
关于如何启动和运行此测试有什么建议吗?
最佳答案
这完全取决于您需要执行的操作。阴影在那里帮助测试。他们有时会帮助初始化 View 或从他们那里获取/设置数据,否则这些数据将无法访问。这并不意味着没有影子你就不能做任何事情。
如果您能够在测试中毫无问题地构建您的 DelayAutoCompleteTextView,并且可以使用常规方法从中访问您需要的数据,那么您完全可以在不使用 Shadow 的情况下逃脱。只需使用 findViewById() 找到它并正常使用它。要在任何 View 上执行点击,您可以调用方法 callOnClick。
如果你不能做你需要的,你总是可以为这个 View 制作你自己的自定义阴影,如下所述:http://robolectric.org/custom-shadows/
关于android - 在 Android 中测试 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592613/