2015-08-13 2 views
2

Я новичок в Mockito и не могу получить базовый метод anyInt(). Что мне не хватает? Вот мой тест.Mockito anyInt не работает

public class SpanPainterTest { 
@Test 
    public void simpleTest() { 
    SpannableString mockSpanString = mock(SpannableString.class); 

    SpanPainter painter = new SpanPainter(); 
    painter.applyColor(mockSpanString); 

    verify(mockSpanString).charAt(anyInt()); 
    verify(mockSpanString).equals(anyInt()); 
    } 
} 

Это класс живописца.

public class SpanPainter { 
    public SpannableString applyColor(SpannableString span) { 
    span.charAt(7); 
    span.equals(0); 
    return span; 
    } 
} 

Когда я закомментировать строку «verify...charAt(anyInt()));», то тест проходит, так anyInt() работы по методу equals().

+1

Знаете ли вы, что делает функция charAt? Он возвращает значение в данной позиции. Что вы пытаетесь проверить? – Byron

+0

Я пытаюсь проверить, вызывает ли метод applyColor() метод charAt() с любым целым числом. Мой реальный тест на самом деле более сложный http://stackoverflow.com/questions/31973481/android-junit-tests-cant-call-any-android-api Однако на данном этапе я просто хотел бы знать, может ли anyInt быть проблема. – flobacca

+0

Этот 'span.charAt (7);' не изменяет объект span каким-либо образом, поэтому нет возможности его проверить. Вы не можете знать, был ли вызван метод для объекта, если он не изменит его состояние, и вы проверите изменение состояния. – Byron

ответ

3

Метод charAtfinal и окончательные методы не могут быть издевательскими.

Посмотрите на PowerMock (PowerMockito), чтобы высмеять окончательные методы.