如何在Android上更好地单元测试Looper和Handler代码?

Mar*_*elo 13 multithreading android unit-testing looper

我使用android.os.Handler类在后台执行任务.当单元测试这些时,我调用Looper.loop()让测试线程等待后台任务线程做它的事情.后来,我调用Looper.myLooper().quit()(也在测试线程中),允许测试线程退出loop并恢复测试逻辑.

在我想要编写多种测试方法之前,这一切都很好.

问题是Looper似乎不是为允许在同一个线程上退出和重新启动而设计的,所以我被迫在一个测试方法中完成所有测试.

我查看了Looper的源代码,但找不到解决方法.

有没有其他方法来测试我的Hander/Looper代码?或者可能还有一些测试友好的方式来编写我的后台任务类?

Sur*_*jid 0

我遇到了和你一样的问题。我还想为使用Handler.

与您所做的一样,我使用 来Looper.loop()让测试线程开始处理处理程序中的排队消息。

为了阻止它,我使用了 的实现MessageQueue.IdleHandler来在循环器阻塞时通知我以等待下一条消息的到来。当它发生时,我调用该quit()方法。但同样,和你一样,当我制作多个测试用例时,我遇到了问题。

我想知道您是否已经解决了这个问题并且也许愿意与我(也可能是其他人)分享:)

PS:我也想知道你怎么称呼你的Looper.myLooper().quit().

谢谢!