我想监视是否在Activity中进行了startService(...)调用:
public void testShouldCallServiceOnSendButtonPress() throws Exception {
assertNotNull(activity.pictureToSend);
ActivityMonitor androidMock = help.mockIntent(1);
TouchUtils.clickView(this, activity.sendButton);
help.assertBehavior(androidMock);
}
public ActivityMonitor mockIntent(int numberOfExpectedIntentsSentToAndroid) {
this.numberOfExpectedIntentsSentToAndroid = numberOfExpectedIntentsSentToAndroid;
IntentFilter intentFilter = null;
return androidMock = instrumentation.addMonitor(intentFilter, null, true);// catch all
}
上面我添加了一个catch-all监视器(应该同时捕获Activity和Service意图,对吧?!)
assertNotNull( this.startService(new Intent(this, MyService.class)) );
上面的我验证服务是否已成功启动,并且是。
但是...... catch-all监视器永远不会被命中,instrumentation.checkMonitorHit()不是> = 1。
任何想法为什么?
答案 0 :(得分:1)
查看Android源代码,似乎只有Activity.startActivity才会覆盖对Instrumentation的调用。在Activity中没有覆盖startService,因此它使用Context中的默认实现,因此它永远不会通过检测。
所以不,ActivityMonitor不会捕获服务意图。