在我的 Android 项目中,我有一个Activity:
public MyActivity extends Activity{
...
@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(this, MyService.class)
startService(intent);
}
}
中onStart()
,MyActivity
我才刚刚开始MyService
。
我的简单服务仅用于收听电话状态变化:
public MyService extends Service{
@Override
public int onStartCommand(Intent intent, int arg, int id) {
super.onStartCommand(intent, arg, id);
/*register a PhoneStateListener to TelephonyManager*/
startToListenToPhoneState();// show Toast message for phone state change
return START_STICKY;
}
}
一切正常,启动我的应用程序后,当我打电话时,我的服务正在监听电话状态变化并显示 toast 消息。
接下来,我决定对我的项目进行单元测试,所以我AndroidTestCase
在我的测试项目中创建了一个:
public class MySimpleTest extends AndroidTestCase{
...
@Override
protected void runTest() {
//make a phone call
String url = "tel:3333";
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
mContext.startActivity(mIntent);
}
}
上面的测试用例只是简单地开始一个电话,它也可以正常工作。
我按下 HOME 按钮将我的应用程序置于后台,之后,我运行测试用例以开始通话,我希望PhoneStateListener
我的服务中的服务仍会运行以向我显示 Toast 消息,但它没有.
然后我发现我也必须在我的测试用例中启动或绑定 MyService
,之后我可以在运行我的测试用例时看到来自 PhoneStateListener 的 toast 消息,这是为什么呢?我的意思是为什么我的服务在我的应用程序的后台运行,但我仍然必须在测试用例中启动或绑定服务才能触发MyService
运行时定义的 PhoneStateLister AndroidTestCase
?