जब मैं "रिकॉर्ड" बटन क्लिक करता हूं तो मैं एक इरादा प्रसारित कर रहा हूं। एक बुलियन चर पारित किया जाता है, जो दिखाता है कि रिकॉर्डिंग शुरू हो गई है या नहीं। एक उद्देश्य उत्पन्न करने के लिए कोड है:यह जांचने के लिए कि एक इरादा प्रसारित किया गया है
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 के बजाय अपनी छाया के बजाय आशय है, लेकिन एक ही परिणाम
क्या 'ब्रॉडकास्ट रिसीवर' में किसी भी 'जोर' को वास्तव में बुलाया जाता है? मैंने दोनों 'assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), बराबर (सत्य)) की कोशिश की; 'और' assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), बराबर (झूठा)); और मेरे परीक्षण दोनों में विफल नहीं हुए मामलों। तो, मेरा अनुमान है कि उन ज़ोर देने वाले वक्तव्य वास्तव में कभी नहीं बुलाए जाते हैं। – iRuth
नहीं, इसे कॉल नहीं किया जाता है। – zavidovych