2012-12-26 85 views
0

每次測試執行後junit進入下一個測試。活動在每次測試執行後自動關閉。測試執行後凍結android junit測試

它可以當我測試功能,但不是當我測試視圖。我想在junit執行下一個測試之前在屏幕上看到執行結果。

所以,我想在測試之間做出很小的延遲。


有一個方法可以讓我做到這一點:

public void testMyView() throws InterruptedException { 
    getActivity().runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      // viewOperations... 
     } 
    }); 
    Thread.sleep(3000); 
} 

但我不喜歡這種方式,因爲這個代碼是髒的(尤其是當我有很多這樣的測試)。


另一種方式似乎更好:

@UiThreadTest 
public void testHandleEmptyAlphabetList() throws InterruptedException { 
// view operations 
    Thread.sleep(3000); 
} 

但是:它會阻塞UI線程,但沒有測試線程。我需要阻止一個測試線程。

有沒有什麼辦法可以在測試線程中單獨運行Thread.sleep(3000);


那麼,什麼是測試之間的線程延遲的最佳方式是什麼?

p.s.請不要推薦我額外的測試框架,我想用嵌入工具解決我的問題。謝謝。

+0

嘗試覆蓋tearDown()方法並將'Thread.sleep(3000);'放在這裏。 – yorkw

回答

-1

我建議放棄這種繁瑣的單元測試方式,並使用Robolectric,這樣你的測試運行在JVM中,你不必處理所有這些令人討厭的設置。您會驚喜地發現View測試的運行速度,並且您不需要運行模擬器!

+0

謝謝,我知道Robolectric。但正如我所提到的,我想要純粹的android和junit方式 – pleerock

-1

嘗試使用Robotium進行需要真正Android運行的測試。

solo = new Solo(getInstrumentation(), getActivity()); 
[...] 
if (failure) { 
    solo.takeScreenshot(); 
} 

這將截圖保存到SD卡(需要WRITE_EXTERNAL_STORAGE許可)

或者,如果你不喜歡使用另一個測試框架(雖然我建議你看一看吧),只是偷在那裏使用截圖的代碼