2015-09-15 3 views
0

У меня есть приложение, использующее UPnP-сервер. Для контрольно-измерительного теста я хочу издеваться над этим, т. Е. Создать собственный сервер UPnP, который будет тестироваться. К сожалению, кажется, что сервер UPnP не может работать в том же процессе (в тестовом пакете), что и приложение (которое является клиентом UPnP), поэтому я решил поместить этот UPnP-сервер в другой APK и контролировать его с помощью функциональности Android Messenger.Тест инструментария с использованием Messenger

Я уже установил такой IPC для другого проекта, поэтому я использовал некоторый код, и я могу успешно отправлять сообщения из теста (клиента) на сервер UPnP. Однако тест не может получать сообщения с сервера. Я отправляю объект Messenger клиента в поле replyTo сообщения, и сервер использует этот Messenger для отправки другого сообщения - отправка кажется успешной, но ничего не приходит к клиенту. Если клиент отключился до того, как сервер начал отправлять ответ, я получаю исключение при отправке ответа, что получатель недоступен. Для меня это означает, что объект Messenger, используемый для ответа, является правильным.

Кто-нибудь сталкивался с подобной проблемой или знает, в чем проблема? Почему этот Android IPC не работает с инструментами (функциональный тест)? Есть ли разница в обработке Android кода под тестовым пакетом?

Я предполагаю, что это не имеет значения, но я использую Robotium для тестов.

ответ

0

Таким образом, проблема оказалась (конечно) моим сообщением Обработчик. Было создано во время теста setUp() теста, так что это , созданный на приборе Thread. Выполнение тестовых методов выполняется снова в этой Threading Threading (если вы не аннотируете его для запуска в потоке пользовательского интерфейса). Это означает, что во время выполнения тестового метода обработчик сообщения не может быть выполнен, поэтому сообщение никогда не принимается.

Создание обработчика в новой теме (с использованием петлителя), исправил мою проблему.


Это видео было очень полезно в предоставлении дополнительной информации о том, как IPC работает в Android, а так же то, что Посланник действительно делает для вас. https://newcircle.com/s/post/1340/deep_dive_into_android_ipc_binder_framework_at_andevcon_iv