У меня есть IntentService
(на самом деле WakefulIntentService !), Который возвращает результат в запросы (т. Е. Из действий), используя PendingIntent
, который добавляется к намерению, используемому для запуска службы , Ранее я использовал ResultReceiver
, но обнаружил, что он зависает, если устройство переходит в спящий режим или поворачивается во время обработки запроса.
В качестве модульного теста для этого сервиса я использую класс ServiceTestCase<Service>
. Это прекрасно работало при использовании ResultReceiver
, поскольку его можно было добавить к намерению, передаваемому службе. Однако ServiceTestCase
не содержит метод действия createPendingResult
.
Поэтому мне интересно, как лучше всего протестировать этот сервис. Должен ли я использовать ActivityInstrumentationTestCase2 или ActivityUnitTestCase
вместо этого для моего модульного теста? Или есть идеи получше?
Кстати, я читал в Android Dev. Руководство по услугам следующее:
"Однако, если вы хотите, чтобы служба отправляла результат обратно, клиент, запускающий службу, может создать PendingIntent для широковещательной передачи (с помощью getBroadcast ()) и доставить его службе в намерении, которое запускает службу. Служба может затем использовать трансляцию для доставки результата. "
Использование трансляций для IntentService
, локального для мероприятий, звучит для меня излишне, но я буду рад услышать мнение других по этому поводу.