使用Robolectric,如何测试一个广播意图作为响应的IntentService?
假设以下课程:
class MyService extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("action"));
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试用例中,我试图做这样的事情:
@RunWith(RobolectricTestRunner.class)
public class MyServiceTest{
@Test
public void testPurchaseHappyPath() throws Exception {
Context context = new Activity();
// register broadcast receiver
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// test logic to ensure that this is called
}
};
context.registerReceiver(br, new IntentFilter("action"));
// This doesn't work
context.startService(new Intent(context, MyService.class));
}
}
Run Code Online (Sandbox Code Playgroud)
MyService从未使用此方法启动.我对Robolectric比较陌生,所以我可能会遗漏一些明显的东西.在调用startService之前是否需要进行某种绑定?我已经通过在上下文中调用sendBroadcast验证了广播的工作原理.有任何想法吗?
android unit-testing broadcastreceiver robolectric intentservice