2016-11-22 156 views
1

我有一個Android應用程序,其中點擊活動A開始一個線程。我需要這個線程運行一段時間(2-3分鐘),但我也可以在這段時間內導航到其他片段和活動。Espresso不應該等待異步任務完成。怎麼樣?

手動應用程序沒有任何問題。但是我用濃咖啡自動化測試。我正在嘗試線程啓動的過程(不會很快死掉),但是我通過意大利咖啡的嘲弄點擊導航到其他活動。我總是收到espresso正在等待並且ASYNC_TASK不空閒的錯誤。

我需要espresso才能看到這個並導航到其他屏幕。有沒有辦法做到這一點 ?

回答

0

您可以使用IntentService,您可以在其中完成繁重的任務,並且所有內容都將在後臺執行,而不僅僅是將UI線程留空,還可以在活動之間移動,只要您想要。

這是一個示例代碼,a full example is avaiable as well

public class HeavyJobExecutor extends IntentService { 


    public HeavyJobExecutor() { 
     super("WhateverNameYouWant"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     for (int i = 0 ;i < 100; i ++) { 
      try { 
       new URL("http://stackoverflow.com").openConnection(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

您可能也需要了解BroadcastReceiver,因爲你可以用它們來檢查你的意圖服務的狀態。

+0

但是,我已經在後臺的異步任務上運行了HeavyJobExecutor。 我的問題是濃咖啡等待這完成,我不想要。 –

+0

我不確定用濃咖啡是否是正確的選擇。我開始使用在設備級別工作的UIAutomator,它不關心應用程序線程。這是我工作的解決方法 –

+0

偉大的快樂編碼 –