2010-10-20 74 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); 
    } 
}