【发布时间】:2018-11-27 10:01:07
【问题描述】:
我有一个BroadcastReceiver,它以IntentService 开头:
@Override
public void onReceive(Context context, Intent intent) {
ParamsRequest paramsRequest = new ParamsRequest.Builder()
.setUrl(intent.getStringExtra("url"))
.build();
Intent serviceIntent = new Intent(context, MyIntentService.class);
serviceIntent.putExtra("paramsKey", paramsRequest);
context.startService(serviceIntent);
}
而MyIntentService 检索Intent(带有对象paramsRequest):
@Override
protected void onHandleIntent(Intent intent) {
ParamsRequest paramsRequest = (ParamsRequest) intent.getSerializableExtra("paramsKey");
//more code
}
我有一个测试来确保正确发送和检索意图:
@Test
public void testStartAndroidProofService() {
Intent intent = new Intent(context, AndroidProofService.class);
intent.putExtra("paramsKey", paramsRequest);
receiver.onReceive(context, intent);
assertNull(receiver.getResultData());
ArgumentCaptor<Intent> argumentIntent = ArgumentCaptor.forClass(Intent.class);
Mockito.verify(context, times(1)).startService(argumentIntent.capture());
assertEquals(paramsRequest, argumentIntent.getValue().getSerializableExtra("paramsKey"));
}
但是AssertEquals 失败了:
知道为什么我有 2 个不同的对象吗?
编辑:在argumentIntent.capture() 中捕获的Intent 包含一个ParamsRequest 对象,但该对象中的所有字段都是null。
【问题讨论】:
标签: android unit-testing broadcastreceiver intentservice