【发布时间】:2012-11-17 03:30:45
【问题描述】:
场景:
我正在尝试对我的应用程序的 onClick 处理程序进行单元测试。 Onclick 对 REST API 进行简单搜索,返回结果并更新 UI。
详情:
Onclick 执行一个 AsyncTask,doInBackground 查询 REST API 并返回结果。 onPostExecute 获取结果并将新的 ListAdapter 分配给带有数据的 ListView。
问题:
测试运行程序不会调用 onPostExecute,因为它位于同一 UI 线程上并阻止调用。有几种模式可以处理这个问题。但是,如果我将 AsyncTask 放在 Runnable 中并使用 LatchCountdown 等待结果,则会收到 CalledFromWrongThread 异常。
是否有一个很好的解决方案来对进行 UI 更新的 AsyncTask 进行单元测试?还是我可以实现的更可测试的设计?
【问题讨论】:
-
对我来说这听起来更像是一个 ActivityInstrumentationTestCase...
-
这是在 ActivityInstrumentationTestCase2 类中完成的。
-
您的 asynctask 应该可以正常运行...
-
@dmon 在进行 UI 更新时出错,出现 CalledFromWrongThread 异常。
-
哦,我知道它在哪里出错了。嗯,有些东西很可疑……但如果它适合你……
标签: android unit-testing ui-thread