如何测试的AsyncTask通过点击触发?

编程入门 行业动态 更新时间:2024-10-08 07:31:27
本文介绍了如何测试的AsyncTask通过点击触发?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

如果在的AsyncTask 通过一个按钮点击事件触发,我怎么能测试它 - 我怎么能等到AsyncTask的完成?

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

MainActivityFunctionalTest

公共类MainActivityFunctionalTest扩展            ActivityInstrumentationTestCase2< MainActivity> {    // ...        公共无效testRegistration(){        的ImageButton submitBtn =(的ImageButton)solo.getView(R.id.BtnR);        assertNotNull(submitBtn);        submitBtn.performClick();                //当注册完成后如何做?        }    // ...    }

MainActivity (将要测试的项目)

的ImageButton submitBtn =(的ImageButton)findViewById(R.id.BtnRegister);submitBtn.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){                sendRegistration();            }        });公共无效sendRegistration(){        处理器处理器=新处理器(); // AsyncTask的子类        processor.execute();    }

解决方案

你可以这样做:

myAsyn的obj =新myAsyn();obj.execute();而(obj.getStatus()== AsynTask.status.Finished){//在这儿等着}//当它完成,这code将要执行。

If the AsyncTask is triggered by a click event on a button, how can I test it - how can I wait until the AsyncTask completes?

Note I can always execute the AsyncTask directly in my test method, I know how to test such scenario. However, if I insist on on using simulating the onClick event using performClick() can I still test my registration process?

MainActivityFunctionalTest

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 (of the project to be tested)

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(); }

解决方案

you can do :

myAsyn obj = new myAsyn(); obj.execute(); while(obj.getStatus()==AsynTask.status.Finished) { //wait here } //when it finishes , this code will going to execute.

更多推荐

如何测试的AsyncTask通过点击触发?

本文发布于:2023-11-28 06:28:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1641296.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   AsyncTask

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!