"録音"ボタンをクリックしたときにインテントをブロードキャストしています。記録が開始されたかどうかを示すブール変数が渡されます。インテントを生成するコードは次のとおりです。インテントがブロードキャストされたことをテストする方法
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();
}
私も)(代わりにgetBooleanのGETを使用して代わりにその影の実際の意図が、同じ結果
'BroadcastReceiver'の' assert'のどれかが実際に呼び出されますか?私はassertThat(intent.hasExtra(AppActivity.RECORDING_STARTED)、equalTo(true))と 'assertThat(intent.hasExtra(AppActivity.RECORDING_STARTED)、equalTo(false)); 'の両方を試してみました。ケース。だから、私の推測では、それらのassert文は実際に呼ばれることはありません。 – iRuth
いいえ、呼び出されません。 – zavidovych