首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试点击触发的AsyncTask?

如何测试点击触发的AsyncTask?
EN

Stack Overflow用户
提问于 2014-02-11 04:14:22
回答 4查看 366关注 0票数 1

如果AsyncTask是由按钮上的单击事件触发的,我如何测试它--如何等待AsyncTask完成?

注意,我总是可以在我的测试方法中直接执行AsyncTask,我知道如何测试这样的场景。然而,如果我坚持使用模拟onClick事件使用performClick(),我还能测试我的注册过程吗?

MainActivityFunctionalTest

代码语言:javascript
复制
public class MainActivityFunctionalTest extends
            ActivityInstrumentationTestCase2<MainActivity> {
    // ...
        public void testRegistration() {
        ImageButton submitBtn = (ImageButton) solo.getView(R.id.BtnR);
        assertNotNull(submitBtn);


        submitBtn.performClick();
                // How to do something when the registration is done?
        }
    // ...
    } 

MainActivity (待测试的项目)

代码语言:javascript
复制
ImageButton submitBtn = (ImageButton) findViewById(R.id.BtnRegister);
submitBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                sendRegistration();
            }
        });

public void sendRegistration() {
        Processor processor = new Processor();// subclass of AsyncTask
        processor.execute();
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-11 04:19:45

你可以:

代码语言:javascript
复制
myAsyn obj = new myAsyn();
obj.execute();

while(obj.getStatus()==AsynTask.status.Finished)
{
//wait here
}

//when it finishes , this code will going to execute.
票数 3
EN

Stack Overflow用户

发布于 2014-02-11 04:38:44

还可以使用get()方法等待任务完成。http://developer.android.com/reference/android/os/AsyncTask.html#get%28%29

票数 1
EN

Stack Overflow用户

发布于 2014-02-11 05:06:52

使用您的Activity从您的ActivityTestCase。通过id查找视图,然后简单地将事件发送到视图。

关于runTestOnUiThread的更多信息

代码语言:javascript
复制
private void buttonTest(Activity activity, int buttonId){
   Button button = (Button) activity.findViewById(buttonId);
    assertNotNull("Button not allowed to be null", button);
    button.performClick();
}

private void runButtonTest(Activity activity, int buttonId){
       getInstrumentation().runTestOnUiThread(new Runnable() {
            public void run() {
                buttonTest(activity,buttonId);
            }
     Object o = activity.mAsyncTask.get();
     assertNotNull(o);
}

或者,您可以等到StatusAsyncTask更改为Status.Finished

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

https://stackoverflow.com/questions/21692974

复制
相关文章

相似问题

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