Я использую Mockito написать простой модульный тест. У меня есть smiple абстрактный класс, который реализует Runnable
:Mockito: проверить метод захваченного объекта называется
public abstract class MyRunnable implements Runnable {
@Override
public void run() {
doTask();
}
public abstract void doTask();
}
Тогда функция испытуемый использует MyRunnable
:
public class MyService {
public void something() {
executor.execute(new MyRunnable() {
@Override
doTask() {
…
}
});
}
}
Мой тест, я хочу, чтобы проверить doTask()
закончилась:
@Test
public void testSomething() {
…
ArgumentCaptor<MyRunnable> myCaptor = ArgumentCaptor.forClass(MyRunnable.class);
verify(mockMyService).something(myCaptor.capture());
// get what has been captured
MyRunnable myRunnable = myCaptor.getValue();
//verify doTask() has run , but got ERROR.
verify(myRunnable).doTask();
}
Мой тестовый пример бросить следующее сообщение об ошибке:
org.mockito.exceptions.misusing.NotAMockException:
Argument passed to verify() is of type and is not a mock!
Ошибка связана с тем, что verify()
принимает только смеющийся объект. Тогда, как я могу проверить/тест, что захватилиMyRunnable
объект запустить doTask()
с Mockito?
Спасибо, это также то, что я имею в виду тоже :) – user842225