如何在android中模拟MotionEvent和SensorEvent进行单元测试?

如何单元测试 android SensorEvent和MotionEvent类?

我需要为Unit测试创建一个MotionEvent对象. (我们已经获得了MotionEvent的方法,我们可以在模拟后使用它来创建MotionEvent自定义对象)

对于MotionEvent类,我尝试使用Mockito:

MotionEvent Motionevent = Mockito.mock(MotionEvent.class);

但是我在Android Studio上遇到错误

java.lang.RuntimeException:

Method obtain in android.view.MotionEvent not mocked. See https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support for details.
    at android.view.MotionEvent.obtain(MotionEvent.java)

关于此错误提到的网站,我已添加

testOptions {
        unitTests.returnDefaultValues = true
    }

在build.gradle上,但我仍然得到同样的错误.对此有何想法?

解决方法

我终于使用Roboelectric为MotionEvent实现了它
import android.view.MotionEvent;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;

import static org.junit.Assert.assertTrue;

import org.robolectric.RobolectricGradleTestRunner;

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class ApplicationTest {

    private MotionEvent touchEvent;

    @Before
    public void setUp() throws Exception {
        touchEvent = MotionEvent.obtain(200,300,MotionEvent.ACTION_MOVE,15.0f,10.0f,0);
    }
    @Test
    public void testTouch() {
      assertTrue(15 == touchEvent.getX());
    }
}

我们如何为SensorEvents做同样的事情?

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...