Если AsyncTask
запускается нажатием кнопки на кнопке, как я могу ее протестировать - как я могу дождаться завершения AsyncTask?Как проверить AsyncTask, вызванный щелчком?
Примечание. Я всегда могу выполнить AsyncTask
непосредственно в своем методе тестирования, я знаю, как тестировать такой сценарий. Однако, если я настаиваю на использовании имитации события onClick
с использованием performClick()
, могу ли я еще проверить свой процесс регистрации?
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'. Моя задача - протестировать «AsyncTask», которая косвенно запускается через событие onClick. Вы все в основном говорите мне, чтобы я выполнил «AsyncTask» в моем тестовом классе - минуя событие onClick на кнопке – ericn
, вы можете создать объект asyn в oncreate, а затем по вашему методу onclick выполнить это asyntask и вызвать имя метода, например, waitForMe ', которые содержат определение этого цикла while, который ждет, пока не закончится asyn. –
Я считаю, что здесь существует огромное недоразумение. Просьба проверить мои изменения :) – ericn