Использование PendingIntent в модульном тесте для тестирования сервиса - PullRequest
2 голосов
/ 14 июня 2011

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

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

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

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

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

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

...