如何单元测试
android SensorEvent和MotionEvent类?
我需要为Unit测试创建一个MotionEvent对象. (我们已经获得了MotionEvent的方法,我们可以在模拟后使用它来创建MotionEvent自定义对象)
对于MotionEvent类,我尝试使用Mockito:
@H_301_6@MotionEvent Motionevent = Mockito.mock(MotionEvent.class); @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做同样的事情?