2011-04-26 22 views
12

我有一个数据库组件依靠AsyncTask来检索数据。一旦在应用程序中使用它将始终从UI线程调用,但我如何在JUnit测试中做到这一点,而不实例化一个Activity(我只是没有一个活动,也不应该创建一个仅用于测试目的)?如何在没有Activity的情况下在Android JUnit测试中的UI线程中运行代码?

runOnUiThread()是一种活动方法,所以它不是一个选项。有没有办法通过从Android测试库中获取一个或通过实现MockUiThread来模拟UI线程?

+0

什么是基类测试的? – 2011-04-26 14:03:35

+0

'AndroidTestCase' – 2011-04-27 06:33:46

回答

19

Android.OS.Handler应该能够更新ui。

要使用你要继承它,并在此改变的handleMessage()的处理来处理消息

更新:

我使用MonoDroid的,所以我不知道这是否是完全翻译的,但是,

您可以使用

new Handler(context.getMainLooper()).post(runnable); 
+1

谢谢,它也适用于普通的Android。 :)在另一个线程中,我读到我真正必须做的是在创建任何其他线程之前在UI线程中实例化一个AsyncTask,并且以下线程将自动知道UI线程,它似乎很好用!谢谢。 – 2011-04-27 06:32:44

+0

这是很好的信息。我用Send来获取消息。 – vlad259 2012-01-18 16:41:00

相关问题