Espresso广播意图手动

时间:2016-12-22 20:36:24

标签: android android-intent broadcastreceiver automated-tests android-espresso

我正在为一项功能编写espresso测试,该功能使用广播接收器过滤Intent.ACTION_TIME_TICK操作。本质上,onReceive(..)是由系统每分钟触发的,我的UI可能会也可能不会更新。问题是,我的UI测试现在必须休眠1分钟以确保onReceive(..)在执行语句之前至少触发过一次,假设onReceive(..)触发了UI更新。

我想摆脱睡眠代码并代表系统手动触发onReceive(..),但是使用Intent.ACTION_TIME_TICK无法实现Android文档。

  

这是受保护的意图,只能由系统发送。

是否有可能实现我想要的或完全不同的方法?

1 个答案:

答案 0 :(得分: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);
            }
        }
    }
}