Répondre

1

Il semble qu'il n'y ait aucun moyen de forcer express à attendre dans ce cas, ou du moins, je pourrais le trouver. La solution que j'ai trouvée est d'envoyer des messages synchrones en utilisant la méthode sendBroadcastSync au lieu de sendBroadcast. Pour éviter le code malodorant, j'ai enveloppé le LocalBroadcastManager dans une abstraction et remplacé le wrapper par une version simulée de celui-ci dans le test, de sorte qu'il peut avoir un comportement différent pour le test.

+0

Je suis arrivé à la même conclusion. Je faisais des tests d'instrumentation et j'utilisais Mockito pour espionner le 'BroadcastReceiver' et capturer le' Intent 'passé dans la méthode 'onReceive' et vérifier - cela fonctionne, mais je pense que cela devrait être plus facile, ou du moins une norme-cadre façon de tester. –

+0

Je pense que le problème est de savoir comment le framework de test est design. Il tient sur le principe que lorsque le thread est à l'état inactif, l'application atteint un état final. Les appels asynchrones comme la diffusion peuvent mettre le thread en veille avant que l'application complète ne réagisse au test de stimulation – ByteArtisan