android - 在 Android 中测试 AutoCompleteTextView

标签 android junit robolectric

我正在使用 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/

相关文章:

java - 使用 Apache poi 时,ooxml-schemas-1.4.jar 和 poishadow-all.jar 中出现重复错误

java - EditText 密码切换按钮不显示密码

java - "instanceof"与 assertEquals 的 assertTrue

android - Robolectric 不适用于 UrbanAirship

android - 不能将 PowerMock 与 Robolectric 一起使用

android - 从数据库/网站调用和使用音频、视频和图像文件

java - 如何对并发 rxjava 执行进行单元测试

java - JUnit 测试 "Times Out"尽管执行速度很快?

java - 如何使用 Robolectric 测试 AsyncTask?

android - 程序类型已经存在 : android. arch.core.R