Я получаю сообщение об ошибке java.lang.RuntimeException: метод moveTo в android.graphics.Path не высмеивается, когда я хочу проверить свой класс.
Мне кажется, у меня возникли проблемы с пониманием: http://static.javadoc.io/org.mockito/mockito-core/2.25.1/org/mockito/Mockito.html#spy-T- -> "Создает шпиона реального объекта. Шпион вызывает реальные методы, если они не зарезаны". Я не понимаю, почему это так.НЕ используя реальный объект.Как я понимаю насмешки, я не должен беспокоиться об объекте Path.
Класс, который я хочу проверить:
import android.graphics.Canvas;
import android.graphics.Path;
import android.view.MotionEvent;
public class DrawPath(Canvas canvas) {
private Path drawPath = new Path();
public DrawPath(Canvas canvas, Paint paint)
{
this.canvas = canvas;
}
public void draw(MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
path.moveTo(touchX, touchY);
}
}
Класс, который должен проверить класс выше:
import static org.mockito.Mockito.*;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.MotionEvent;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.MockitoRule;
@RunWith(MockitoJUnitRunner.class)
public class DrawPathTest {
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Spy Canvas canvas = new Canvas();
@Mock MotionEvent mockEvent = mock(MotionEvent.class);
DrawPath drawPath = null;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void testDraw()
{
drawPath = new DrawPath(canvas, paint);
float xy = 0.f;
xy = 10.f;
when(mockEvent.getAction()).thenReturn(MotionEvent.ACTION_DOWN);
when(mockEvent.getX()).thenReturn(xy);
when(mockEvent.getY()).thenReturn(xy);
drawPath.draw(mockEvent);
}
}