2011-04-26 26 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

相關問題