【问题标题】:How to wait for BroadcastReceiver to receive the message in a Expresso Tests如何在 Expresso 测试中等待 BroadcastReceiver 接收消息
【发布时间】:2017-08-13 23:23:36
【问题描述】:

Expresso 不等待消息被传递,导致在对操作执行断言之前没有更新接口。 如何强制它等待?

【问题讨论】:

    标签: android unit-testing broadcastreceiver android-espresso


    【解决方案1】:

    在这种情况下,似乎没有办法强制快递等待,或者至少,我可以找到它。我找到的解决方案是使用方法sendBroadcastSync 而不是sendBroadcast 发送同步消息。

    为了避免臭代码,我将 LocalBroadcastManager 包装在一个抽象中,并在测试中用它的模拟版本替换包装器,因此它可以有不同的测试行为。

    【讨论】:

    • 我得出了同样的结论。我正在做一些仪器测试并使用 Mockito 来监视 BroadcastReceiver 并捕获 Intents 在 onReceive 方法中传递并验证 - 这可行,但仍然觉得这应该更容易,或者至少是一个框架标准测试方法。
    • 我认为问题在于测试框架是如何设计的。它的前提是当线程处于空闲状态时,应用程序达到最终状态。像广播这样的异步调用可以在应用程序完成对测试刺激做出反应之前将线程置于空闲状态
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多