Использование PendingIntent в модульном тесте для тестирования сервиса

У меня есть IntentService (на самом деле это WakefulIntentService!), который возвращает результат в запросы (т. е. из действий), используя PendingIntent это добавляется к намерению, используемому для запуска службы. Раньше я пользовалась ResultReceiver но обнаружил, что происходит сбой, если устройство переходит в спящий режим или поворачивается во время обработки запроса.

В качестве юнит-теста для этого сервиса я использую ServiceTestCase<Service> учебный класс. Это работало нормально при использовании ResultReceiver поскольку он может быть добавлен к цели, переданной службе. Тем не мение, ServiceTestCase не содержит активности createPendingResult метод.

Поэтому мне интересно, каков наилучший подход для тестирования этого сервиса. Должен ли я использовать ActivityInstrumentationTestCase2 или ActivityUnitTestCase вместо этого для моего модульного теста? Или есть идеи получше?

Кстати, я читал в Android Dev. Руководство по услугам следующее:

"Однако, если вы хотите, чтобы служба отправляла результат обратно, клиент, запускающий службу, может создать PendingIntent для широковещательной передачи (с помощью getBroadcast()) и доставить его службе в намерении, которое запускает службу. Служба Затем можно использовать трансляцию, чтобы доставить результат. "

Использование трансляций для IntentService для меня это похоже на излишество, но я буду рад услышать мнения других по этому поводу.

0 ответов

Другие вопросы по тегам