首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何测试ListActivity?

如何测试ListActivity?
EN

Stack Overflow用户
提问于 2011-07-16 12:45:57
回答 1查看 2.8K关注 0票数 1

我是Android开发和测试驱动开发的新手。我想为以下ListActivity编写单元测试:

代码语言:javascript
运行
复制
public class TrendsMainActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    String[] list_items = getResources().getStringArray(R.array.trend_menu_names);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.main, list_items));
}

@Override
protected void onListItemClick(ListView listView, View view, int position, long id)
{
    Intent intent = null;

    switch(position)
    {
        case 0:
            intent = new Intent(this, TrendingActivity.class);
            break;
        case 1:
            intent = new Intent(this, SearchActivity.class);
            break;
        case 2:
            intent = new Intent(this, TimelineActivity.class);
            break;
    }
    if(intent != null)
    {
        startActivity(intent);
    }
    else
    {
        Log.e(getClass().getSimpleName(), "There was an error retrieving request.");
    }
}}

我已经搜索了我能找到的所有文档,但我不知道如何测试这个活动。onListItemClick方法还没有完成,但它给出了我想要完成的任务的想法。我想测试单击ListView中的第一项,并测试是否启动了正确的活动。

我如何才能做到这一点呢?

编辑:我想让我的测试“点击”ListView中的一个项目。然后,我想断言启动的活动是正确的活动(例如,单击ListView item 0专门启动TrendingActivity )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-16 15:32:47

我应该说,如果您正在应用TDD,那么您应该开始编写测试,而不是应用程序。

无论如何,Android Application Testing Guide在第三章中包含了两个示例,它们结合在一起可以给出您正在寻找的解决方案。其思想是使用ActivityMonitor来验证预期的活动是否已启动。

代码语言:javascript
运行
复制
@UiThreadTest
public void testListItemClickStartsActivity() {
    final Instrumentation inst = getInstrumentation();
    final IntentFilter intentFilter = new IntentFilter();
    // here add conditions to your filter, i.e. intentFilter.addAction()
    ActivityMonitor monitor = inst.addMonitor(intentFilter, null, false);
    assertEquals(0, monitor.getHits());
    // here perform desired click on list
    monitor.waitForActivityWithTimeout(5000);
    assertEquals(1, monitor.getHits());
    inst.removeMonitor(monitor);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6715397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档