2017-08-13 30 views

回答

1

在這種情況下,似乎沒有辦法迫使快遞等待,或者至少,我能找到它。我找到的解決方案是使用方法sendBroadcastSync而不是sendBroadcast發送同步消息。

爲了避免出現臭味的代碼,我將LocalBroadcastManager封裝在一個抽象中,並在測試中用它的模擬版本代替了包裝,因此它可以有不同的測試行爲。

+0

我得出了同樣的結論。我正在做一些儀器測試,並且使用Mockito來監視'BroadcastReceiver'並捕獲'onReceive'方法中傳遞的'Intent'並驗證 - 這是有效的,但仍覺得這應該更容易一些,或者至少一個框架標準方式來測試。 –

+0

我認爲問題在於測試框架是如何設計的。它的前提是,當線程處於空閒狀態時,應用程序達到最終狀態。像廣播這樣的異步調用可以在應用程序完成反應以測試激勵之前將線程置於空閒狀態 – ByteArtisan