如何为接收GCM通知添加测试覆盖率?测试场景:我的应用程序在后台,通知到达,检查它是否显示,点击通知打开应用程序。当我手动测试时,它在模拟器中工作。我得到了Android Notification Not Showing On API 26所以需要一个测试来检测破损。我看到了此How to detect headsup notification in uiautomator?,但它没有显示如何为我的应用创建通知。
更新 我想出了如何创建由接收器处理的意图。
// app already started and in background
Intent intent = new Intent();
intent.setAction("com.google.android.c2dm.intent.RECEIVE");
intent.putExtra("from", "1234567890");
intent.putExtra("message", "Android may be hard, but iOS is even harder");
Context context = InstrumentationRegistry.getInstrumentation().getContext();
context.sendBroadcast(intent);
我的接收者和听众:
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!--category tag not required if min SDK 16 or higher-->
</intent-filter>
</receiver>
<service
android:name=".gcm.MyGcmListenerService"
android:permission="com.google.android.c2dm.permission.RECEIVE"
android:exported="true" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
答案 0 :(得分:1)
解决方案涉及搞清楚一些事情。
检查是否显示通知很棘手,因为无法使用Android Studio Layout Inspector检查通知抽屉。因此找到元素是反复试验的。我这样做了:
UiSelector textSelector = new UiSelector().textContains("some text in my message");
UiObject notificationText = device.findObject(textSelector);
然后输出UiObjects的属性,这样我就可以使选择器更具体(添加packageName和className)。
我的测试意图和接收器/服务元素的代码在问题的更新部分。