я реализовал макет ExecutorService вернуть результат мгновенно, без необходимости создавать темы:Передразнивало ExecutorService всегда возвращает то же самое Передразнивало будущее
public static ExecutorService createMock() throws Exception {
ExecutorService executorServiceMock = EasyMock.createMock(ExecutorService.class);
Future future = EasyMock.createMock(Future.class);
Capture<Callable<?>> callableCapture = new Capture<>();
EasyMock.expect(executorServiceMock.submit(EasyMock.<Callable<?>>capture(callableCapture))).andReturn(future).anyTimes();
EasyMock.expect(future.get()).andAnswer(() -> callableCapture.getValue().call()).anyTimes();
executorServiceMock.shutdown();
EasyMock.expectLastCall().anyTimes();
EasyMock.replay(future, executorServiceMock);
return executorServiceMock;
}
Проблема заключается в том, что она всегда возвращает один и тот же [высмеивал] Будущий объект. Мне нужно вернуть новый экземпляр Future mock на основе вызываемого объекта, переданного в executorServiceMock.submit() Я попытался использовать PowerMock.expectNew (Future.class), но он пожаловался «Нет конструктора, найденного в классе» java.util.concurrent .Future 'с типами параметров: [] "
В вашем случае вы ожидаете, что возвращаемое значение Integer. Я хочу вернуть тот же тип, который указан в вызываемом – Pooya
. Я вернул Integer, потому что я тестировал его с помощью Integer. Это может быть более общим. Я соответствующим образом изменил ответ. – Henri