Я передаю намерение, когда нажата кнопка «Запись». передается логическая переменная, которая показывает, запущена ли запись или нет. Код для создания намерения:Как проверить, что намерение было передано
Intent recordIntent = new Intent(ACTION_RECORDING_STATUS_CHANGED);
recordIntent.putExtra(RECORDING_STARTED, getIsRecordingStarted());
sendBroadcast(recordIntent);
Для проверки этого кода я зарегистрировал приемник в тесте. Цель получена, но передаваемая переменная не совпадает. Если я отлаживаю код, я вижу, что значение такое же, как и отправлено, но когда я его получаю, это не то же значение.
@Test
public void pressingRecordButtonOnceGenerateStartRecordingIntent()
throws Exception {
// Assign
AppActivity activity = new AppActivity();
activity.onCreate(null);
activity.onResume();
activity.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
// Assert
ShadowIntent shadowIntent = Robolectric.shadowOf(intent);
assertThat(shadowIntent
.hasExtra(AppActivity.RECORDING_STARTED),
equalTo(true));
Boolean expected = true;
Boolean actual = shadowIntent.getExtras().getBoolean(
AppActivity.RECORDING_STARTED, false);
assertThat(actual, equalTo(expected));
}
}, new IntentFilter(
AppActivity.ACTION_RECORDING_STATUS_CHANGED));
ImageButton recordButton = (ImageButton) activity
.findViewById(R.id.recordBtn);
// Act
recordButton.performClick();
ShadowHandler.idleMainLooper();
}
Я также протестировали против фактического намерения, а не его тени, но тот же результат
На самом деле вызываются ли какие-либо из '' '' '' '' '' '' '' '' '' ''' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Я попробовал оба: assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), equalTo (true)); 'и' assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), equalTo (false)); 'и мои тесты не прерывались в обоих случаев. Итак, я предполагаю, что те утверждения, которые никогда не вызываются, действительно вызываются. – iRuth
Нет, он не вызван. – zavidovych