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

前端之家收集整理的这篇文章主要介绍了如何在android中模拟MotionEvent和SensorEvent进行单元测试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何单元测试 android SensorEvent和MotionEvent类?

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

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

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

但是我在Android Studio上遇到错误

@H_301_6@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)

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

@H_301_6@testOptions { unitTests.returnDefaultValues = true }

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

解决方法

我终于使用Roboelectric为MotionEvent实现了它 @H_301_6@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相关文章