gpt4 book ai didi

android - 不休眠测试 PendingIntent 发送

转载 作者:行者123 更新时间:2023-11-29 01:41:45 24 4
gpt4 key购买 nike

我得到了以下测试用例:

Intent intent = new Intent("test");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("test");
testReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
recieved=true;
}
};
getContext().registerReceiver(testReceiver,intentFilter );
pendingIntent.send();
Thread.sleep(100);

assertTrue(recieved);

有没有办法在没有 Thread.sleep 的情况下使这个测试通过?

最佳答案

您可以使用 CountDownLatch 来等待类似事件的发生。你用一个计数来初始化它。 await() 方法将等待计数达到 0。当计数达到 0 时,它们将停止阻塞(或者如果您指定超时,如果在计数达到 0 之前超时,它将返回 false)。

这是您修改后的示例代码以使用 CountDownLatch:

CountIntent intent = new Intent("test");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("test");

final CountDownLatch countDownLatch = new CountDownLatch(1);
testReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
countDownLatch.countDown();
}
};
getContext().registerReceiver(testReceiver,intentFilter );
pendingIntent.send();

assertTrue(countDownLatch.await(1, TimeUnit.SECONDS));

关于android - 不休眠测试 PendingIntent 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118544/

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