用robolectric测试吐司

问题描述 投票:2回答:2

用Robolectric执行测试时,从不调用我的BroadcastReceiver中的[onReceive

测试

@Test
public void WhenSentNewMessageInAirplaneMode_ToastShouldBeDisplayed() {
    // Arrange
    ShadowSettings.setAirplaneMode(true);
    ImageButton sendBtn = (ImageButton)activity.findViewById(R.id.sendBtn);
    EditText messageEditText = (EditText)activity.findViewById(R.id.messageEditText);
    EditText recipientsEditText = (EditText)activity.findViewById(R.id.recipientsEditText);

    messageEditText.setText("<a message>");
    recipientsEditText.setText("<a address>");

    // Act
    sendBtn.performClick();

    // Assert
    assertEquals(Robolectric.application.getString(R.string.message_not_sent), ShadowToast.getTextOfLatestToast());  // --> ShadowToast.getTextOfLatestToast() is always null
}

我的活动

OnCreate

PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SmsMessageSender.SENT), PendingIntent.FLAG_UPDATE_CURRENT);

Overrides >>

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(smsSentReceiver);
}

@Override
protected void onResume() {
    super.onResume(); // This call always
    smsSentReceiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            if (getResultCode() != Activity.RESULT_OK) {
                Toast.makeText(getBaseContext(), getString(R.string.message_not_sent), Toast.LENGTH_LONG).show(); // On test this never call
            }
        }
    };

    registerReceiver(smsSentReceiver, new IntentFilter(SmsMessageSender.SENT));
}

单击发送btn

smsManager.sendMultipartTextMessage(recipient, null, messageParts,
                new ArrayList<>(Arrays.asList(sentPI))
                , null)
        );

当使用Robolectric执行测试时,从不调用我的BroadcastReceiver中的onReceive。测试@Test公共无效WhenSentNewMessageInAirplaneMode_ToastShouldBeDisplayed(){//安排...

android robolectric
2个回答
2
投票

我认为这与您注册广播接收器的方式有关。如果您正在收听LocalBroadcast,则可以这样实现它们:


0
投票
assert(ShadowToast.showedToast("YOUR TOAST MSG"))
© www.soinside.com 2019 - 2024. All rights reserved.