为onTouch()android编写单元测试

时间:2015-04-09 09:51:06

标签: android junit

我的项目中有一个文本字段,并且与setOnTouchListener相关联。在onTouch()中,我在点击该文本字段后执行了预期的操作。

我需要为onTouch()编写单元测试用例。任何人都可以帮助我吗?

    public boolean onTouch(View v, MotionEvent event) { 

        final Intent intent;

        switch (v.getId()) { 

            case R.id.xyz: 
                intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(getString(R.string.xyz))); 
                startActivity(intent); 
                break;

            case R.id.abc: 
                intent = new Intent(Intent.ACTION_VIEW); 
                intent.setData(Uri.parse(getString(R.string.abc))); 
                startActivity(intent); 
                break; 

            default: 
                break;

        } 

        return false; 
}

2 个答案:

答案 0 :(得分:1)

所以我发现的方法是:

  • get required使用findViewById从预期活动中查看
  • 创建该活动的对象
  • 调用onTouch( view,null
  • 无需关注动作事件的对象,因为它未在此单元测试中使用

答案 1 :(得分:0)

我通过在活动中创建OnTouchListener的变量对象来实现这一点。在测试中,对该对象调用了onTouch。

    MotionEvent motionEvent = mock(MotionEvent.class);
    when(motionEvent.getAction()).thenReturn(MotionEvent.ACTION_DOWN);
    subject.onTouchListener.onTouch(subject,motionEvent);