0

У меня есть тест эспрессо, который я пишу для функции, а функция использует широковещательный приемник, фильтрующий действие Intent.ACTION_TIME_TICK. По существу, onReceive (..) запускается каждую минуту системой, и мой пользовательский интерфейс может или не может обновляться. Проблема в том, что мой тест пользовательского интерфейса теперь должен спать в течение 1 минуты, чтобы гарантировать, что onReceive (..) срабатывает, по крайней мере, один раз, прежде чем выполнять инструкцию, предполагая, что onReceive (..) вызвал обновление пользовательского интерфейса.Эспрессо трансляции намерений вручную

Я хочу избавиться от кода сна и вручную запустить onReceive (..) от имени системы, но документы для Android это невозможно с Intent.ACTION_TIME_TICK.

Это защищенный объект, который может быть отправлен системой.

Возможно ли достичь того, чего я хочу или, возможно, другого подхода полностью?

ответ

0

Закончен, ссылаясь на верхнюю часть выполняемой работы и передавая само сообщение. Я смог сделать это, потому что реализация живет в базовой деятельности, от которой распространяются все действия. Метод getCurrentActivity() реализации можно найти here.

public static void triggerACTION_TICK_BROADCAST() { 
    Activity activity = getCurrentActivity(); 
    if (activity != null) { 
     if (activity instanceof BaseActivity) { 
      BaseActivity baseActivity = (BaseActivity) activity; 
      BroadcastReceiver tickReceiver = baseActivity.getTickReceiver(); 
      if (tickReceiver != null) { 
       Intent intent = new Intent(); 
       intent.setAction(Intent.ACTION_TIME_TICK); 
       tickReceiver.onReceive(InstrumentationRegistry.getContext(), intent); 
      } 
     } 
    } 
}