2010-10-20 97 views
1

我想單元測試在Android屏幕上的滑動左/右動作,但我一直沒能找到任何文檔。任何人都可以伸出援手嗎?它可以完成嗎?如何在Android中測試單元測試?

+4

「誰能借的手?」你想讓別人爲你做點什麼? – 2010-10-20 11:59:24

回答

2

通常觸摸將執行一個動作,您將測試動作,而不是觸摸本身。

+0

我不明白。你是否在說我應該做這個動作,並且在測試完成之後再進行測試。 – NotACleverMan 2010-10-20 12:25:53

+2

讓我們來說說爲了爭辯的目的,當有人滑動時,AndroidOS調用OnSwipeEvent。在OnSwipeEvent的存根中調用MySwipeHandler。您需要測試MySwipeHandler。 – 2010-10-20 12:36:02

+0

這是唯一的方法嗎?我想我可以測試一下,看看滑動事件是否真正起作用,而不是測試它們應該調用的方法。我可以模擬按鈕點擊等。有點不舒服,我不能這樣做。不管怎麼說,多謝拉。 – NotACleverMan 2010-10-20 12:48:12

0

我發現你的問題,試圖學習如何做完全相同類型的手勢完全相同的事情。我能夠使用以下方法運行非常純粹的單元測試。換句話說單元測試View.OnTouchListener.onTouch(View v, Event event)函數。

這是我如何能「模擬」的ViewEvent才能運行onTouch

import android.os.Looper; 
import android.test.mock.MockContext; 
import android.view.MotionEvent; 
import android.view.ViewStub; 
import junit.framework.TestCase; 

public class SwipeDetectorTest extends TestCase { 
    public void testOnTouch() throws Exception { 
     class MyMockContext extends MockContext { 
      public Looper getMainLooper() { 
       return Looper.getMainLooper(); 
      } 
     } 
     MyMockContext context = new MyMockContext(); 
     View v = new ViewStub(context); 
     int x = 0; int y = 0; 

     // simulated down event 
     MotionEvent event = 
      MotionEvent.obtain(1, 0, MotionEvent.ACTION_DOWN, x, y, 0); 
     SwipeDetector swipeDetector = new SwipeDetector(); 
     assertFalse(swipeDetector.onTouch(v, event)); 

     x = 30; y = 0; 
     event = 
      MotionEvent.obtain(1, 1, MotionEvent.ACTION_MOVE, x, y, 0); 
     boolean action = swipeDetector.onTouch(v, event); 
     assertTrue(action); 

     boolean result = swipeDetector.getSwipeHorizontal() 
      .equals(SwipeDetector.Action.LeftToRight); 
     assertTrue(result); 
    } 
}