如果AsyncTask
由按钮上的点击事件触发,我该如何测试它 - 我如何等待AsyncTask完成?如何测试点击触发的AsyncTask?
注意我总是可以直接在我的测试方法中执行AsyncTask
,我知道如何测试这种情况。但是,如果我坚持使用使用performClick()
来模拟onClick
事件,我仍然可以测试我的注册过程吗?
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(项目进行测试)
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();
}
谢谢,但这似乎是'CountDownLatch'的替代方案。我的挑战是测试通过'onClick'事件间接触发的'AsyncTask'。您基本上都告诉我在我的测试类中执行'AsyncTask' - 绕过按钮 – ericn
的onClick事件,您可以在oncreate中创建asyn对象,然后在onclick方法中执行asyntask并调用方法名称,如' waitForMe“,它包含这个等待asyn完成的while循环的定义。 –
我相信这里有一个很大的误解。请结帐我的编辑:) – ericn