gpt4 book ai didi

android - 为 SMS 测试 Android 广播接收器

转载 作者:行者123 更新时间:2023-11-30 00:38:19 26 4
gpt4 key购买 nike

我已经为 Android 编写了一个 SMSReceiver,并且在真实设备上以及当我通过 Telnet 测试应用程序时都可以正常工作。

但是如何在 Android Studio 中为以下 onReceive 方法创建单元测试?

@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();

if (bundle!=null){
Object[] smsExtras = (Object[]) bundle.get("pdus");
String format = (String)bundle.get("format");
String strMessage = "";

for (Object smsExtra : smsExtras) {
SmsMessage smsMessage;
if (Build.VERSION.SDK_INT < 23){
smsMessage = SmsMessage.createFromPdu((byte[]) smsExtra);
}else {
smsMessage = SmsMessage.createFromPdu((byte[]) smsExtra, format);
}

String messageBody = smsMessage.getMessageBody();
String messageSource = smsMessage.getOriginatingAddress();

strMessage += "SMS from " + messageSource + " : " + messageBody;
Log.i(AppConstants.DEBUG_TAG, strMessage);
}

}
}

最佳答案

这取决于您要测试的内容,但您似乎想要检查消息正文和地址是否已正确解析并具有预期的内容。在这种情况下,您可以将该逻辑分解为一个单独的方法并对其进行单元测试,方法是传入 PDU 并检查返回值。

如果你想测试 onReceive,应该可以使用 Mockito,传入一个 MockContext 并模拟 Intent 的 getExtra 以返回你自己的测试 Bundle 对象。不过,您最终还是需要验证一些东西。也许您打算稍后将解析后的数据存储在某个地方?如果是这样,您可以将其用作验证点 - 通过捕获和检查参数,或验证数据是否已存储(尽管这大大扩展了单元测试的边界)。

关于android - 为 SMS 测试 Android 广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43029426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com