首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动化向Android活动发送多个模拟意图的测试?

如何自动化向Android活动发送多个模拟意图的测试?
EN

Stack Overflow用户
提问于 2011-04-19 04:40:37
回答 1查看 2.5K关注 0票数 2

我正在尝试通过Eclipse中的Android工具和Android JUnit向Android活动发送模拟意图。

我能够成功地创建一个测试,将一个Intent发送到Activity,但我想自动执行此操作,并发送几个连续的Intents,这样我就可以测试Activity,并将许多数据作为“额外”数据放入Intent中。我的代码(只适用于单一意图)如下:

代码语言:javascript
复制
public class SearchTest extends ActivityInstrumentationTestCase2<SearchResults> {

    private ListActivity mActivity;
    private ArrayList<String> testManifest = new ArrayList<String>();
    TextView tv; 


    public SearchTest() {
        super("org.fdroid.fdroid", SearchResults.class);
    }//SearchTest

    @Override
    protected void setUp() throws Exception{
        setUpTestManifest();
        super.setUp();
        setActivityInitialTouchMode(false);
        Intent i = new Intent(Intent.ACTION_SEARCH);
        i.setClassName("org.fdroid.fdroid", "org.fdroid.fdroid.SearchResults");
        i.putExtra(SearchManager.QUERY, testManifest.get(0));
        setActivityIntent(i);
        mActivity = getActivity();
        tv = (TextView) mActivity.findViewById(R.id.description);
    }//setUp

    public void testSearchResult(){
        assertTrue(mActivity.getListView().getCount() > 0);
    }//testSearchResult

    public void setUpTestManifest(){
        //populate the test manifest
        testManifest.add("Sample Key Word 1");
        testManifest.add("Sample Key Word 2");
        testManifest.add("Sample Key Word 3");
    }//setupManifest

}//SearchTest 

当我在testManifest中有成百上千个项目,并为每个项目创建意图和测试时,我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-27 21:48:16

您是否尝试过将活动的启动从setUp代码中拉出并放入测试方法中的循环中?例如,

代码语言:javascript
复制
protected void setUp() {
    setUpTestManifest();
    super.setUp();
} 

public void testSearchResult(){
    for (String query : testManifest) {
        setActivityInitialTouchMode(false);
        Intent i = new Intent(Intent.ACTION_SEARCH);
        i.setClassName("org.fdroid.fdroid", "org.fdroid.fdroid.SearchResults");
        i.putExtra(SearchManager.QUERY, query);
        setActivityIntent(i);
        mActivity = getActivity();
        tv = (TextView) mActivity.findViewById(R.id.description);
        assertTrue(mActivity.getListView().getCount() > 0);
        mActivity.finish();  // close the activity
        setActivity(null);   // forces next call of getActivity to re-open the activity
    }
}

-Dan

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5708630

复制
相关文章

相似问题

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