如何测试异步HTTP请求和响应Android

时间:2014-02-10 06:22:10

标签: android junit android-asynctask apache-httpclient-4.x android-testing

我有一个带有“提交”按钮的用户注册表单。基本上,当按下“提交”按钮时,会生成AsyncTask。此AsysncTask发送HTTP请求(使用Apache HttpClient),该请求由表单中的输入组成,例如IC编号被发送到服务器。预计会有一些回应。

RegistrationActivity具有以下内容:

public void onCreate(Bundle savedInstanceState) {
...
submitBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                sendActivation(v);
            }
        });
...
}
public void sendActivation(View v) {
        EditText text = (EditText) findViewById(R.id.InputIcNo);
        if (text.getText().length() == 0) {
            showErrorMessage("IC No. cannot be blank!");
            return;
        }

        mProcess = new AsyncProcess(this, this.getApplicationContext());
        mProcess.initActivation(text.getText().toString(), null);
        mProcess.execute();
    }  

RegistrationActivityUnitTest:

ImageButton submitBtn = (ImageButton) this.activity.findViewById(R.id.BtnSubmit);
        assertNotNull(submitBtn);
        submitBtn.performClick();
// I don't know what to do from here!

如何使用AsyncTask测试发送HTTP请求和接收响应?

我非常乐意将其分解并一次测试一件小事 例如首先,当按下按钮时AsyncTask是否运行? 第二,AsyncTask是否发送HTTP请求? 接下来,应用程序是否收到相同HTTP请求的响应? 等

1 个答案:

答案 0 :(得分:0)

如果我理解你,你的问题是在哪里可以检查异步请求的响应。也许看看thispost。我不知道是否有更好的解决方案,但我通过传递一个Observer对象作为回调函数来做到这一点。在您的情况下,“update”coud的实现检查请求的停止。