Я пытаюсь выполнить Mock класс DateFormat, поскольку он не имеет никакой цели в рамках моего модульного теста. Я использую библиотеку org.mockito.Mockito.Отказывание класса DateFormat в junit-тесте
следующий код:
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.any;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.junit.Before;
public class someTest {
@Mock
DateFormat formatter;
@Before
public void before() {
MockitoAnnotations.initMocks(this);
when(formatter.format(any(Date.class))).thenReturn("2017-02-06");
}
}
Выдает следующее сообщение об ошибке:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 1 recorded:
-> at someTest.before(someTest.java:33)
This exception may occur if matchers are combined with raw values: //incorrect: someMethod(anyObject(), "raw String"); When using matchers, all arguments have to be provided by matchers. For example: //correct: someMethod(anyObject(), eq("String by matcher"));
For more info see javadoc for Matchers class.
at java.text.DateFormat.format(Unknown Source)
at someTest.before(someTest.java:33)
Как издеваться класс DateFormat в правильном пути?
Не так ли просто создать реальный экземпляр? 'formatter = new SimpleDateFormat (" '2017-02-06' ");' –
@AndyTurner В чем преимущество использования реального экземпляра по сравнению с объектом Mocked? – henrik
Я расскажу вам об этом: как вы думаете, что вы получаете, издеваясь над этим объектом, а не используя реальный экземпляр? –