Я пишу тест JUnit для действия, которое запускает почтовый клиент устройства по умолчанию. Я хочу проверить, что действие «Отправить» запущено, а затем отправить событие нажатия на кнопку «Отправить».
Я настроил ActivityMonitor с фильтром намерений, чтобы получить ссылку на действие «Отправить». Я вижу, как во время выполнения теста появляется сообщение об отправке почты, но, к сожалению, монитор никогда не срабатывает.
Вот код модульного теста, который пытается найти действие «Отправить»:
// register activity monitor for the send mail activity
Instrumentation instrumentation = getInstrumentation();
IntentFilter filter = new IntentFilter(Intent.ACTION_SENDTO);
ActivityMonitor monitor = instrumentation.addMonitor(filter, null, false);
// click on the "Send Feedback" button (use Robotium here)
solo.clickOnButton(0);
// wait for the send mail activity to start
Activity currentActivity = instrumentation.waitForMonitorWithTimeout(monitor, 5000);
assertNotNull(currentActivity);
А вот как в приложении запускается действие «Отправить»:
Uri uri = Uri.parse("mailto:address@mail.com");
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra(Intent.EXTRA_SUBJECT, "Message Title");
i.putExtra(Intent.EXTRA_TEXT, "Hello");
startActivity(i);
Правильно ли установлен фильтр намерений? Или невозможно отслеживать действия, которые не определены в проекте?
Спасибо за вашу помощь.