Tôi đang phát sóng ý định khi nhấp vào nút "bản ghi". một biến boolean được truyền, cho biết bản ghi có được bắt đầu hay không. Mã để tạo mục đích là:Cách kiểm tra mục đích đã được phát sóng
Intent recordIntent = new Intent(ACTION_RECORDING_STATUS_CHANGED);
recordIntent.putExtra(RECORDING_STARTED, getIsRecordingStarted());
sendBroadcast(recordIntent);
Để kiểm tra mã này tôi đã đăng ký người nhận thử nghiệm. Ý định được nhận nhưng biến đã qua không giống nhau. Nếu tôi gỡ lỗi mã, tôi có thể thấy rằng giá trị là giống như nó được gửi, nhưng khi tôi nhận được nó, nó không phải là cùng một giá trị.
@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();
}
Tôi cũng đã thử nghiệm chống lại mục đích thực tế thay vì cái bóng của nó, nhưng kết quả tương tự
Có bất kỳ 'xác nhận' nào trong 'BroadcastReceiver' thực sự được gọi không? Tôi đã thử cả hai 'assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), bằngTo (true));' và 'assertThat (intent.hasExtra (AppActivity.RECORDING_STARTED), equalTo (false));' và các test của tôi không thất bại trong cả hai các trường hợp. Vì vậy, tôi đoán là những tuyên bố khẳng định không bao giờ thực sự được gọi. – iRuth
Không, nó không được gọi. – zavidovych