我正在为一项功能编写espresso测试,该功能使用广播接收器过滤Intent.ACTION_TIME_TICK操作。本质上,onReceive(..)是由系统每分钟触发的,我的UI可能会也可能不会更新。问题是,我的UI测试现在必须休眠1分钟以确保onReceive(..)在执行语句之前至少触发过一次,假设onReceive(..)触发了UI更新。
我想摆脱睡眠代码并代表系统手动触发onReceive(..),但是使用Intent.ACTION_TIME_TICK无法实现Android文档。
这是受保护的意图,只能由系统发送。
是否有可能实现我想要的或完全不同的方法?
答案 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);
}
}
}
}