"Kayıt" düğmesine tıklandığında bir amaç yayınlıyorum. Kaydın başlatılıp başlatılmadığını gösteren bir boole değişkeni geçilir. Bir amaç oluşturmak için kod:Bir niyet yayınlandığını sınamak için
Intent recordIntent = new Intent(ACTION_RECORDING_STATUS_CHANGED);
recordIntent.putExtra(RECORDING_STARTED, getIsRecordingStarted());
sendBroadcast(recordIntent);
Bu kodu sınamak için, teste bir alıcı kaydettim. Amaç alındı, ancak geçirilen değişken aynı değil. Kodu ayıklarsa, değerin gönderildiği ile aynı olduğunu görebilirim, ancak aldığımda, aynı değer değil.
@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();
}
Ben de (yerine getBoolean yerine kendi gölgesinin fiili niyet, ancak aynı sonucu get (kullanarak
"BroadcastReceiver" daki "assert" lerden herhangi biri gerçekten aranıyor mu? Ben hem assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), equalTo (true)), hem de assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), equalTo (false)) denedim; vakalar. Bu yüzden, benim tahminim, bu ifadeli ifadelerin hiçbir zaman gerçekten aranmadığıdır. – iRuth
Hayır, çağrılmadı. – zavidovych