我的目标是编写一个单元测试来测试
TimeoutException
是否被抛出。
这是我的逻辑:
public String getString() {
String myString;
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> future = executorService.submit(() -> someService.getString());
try {
myString = future.get(2, SECONDS);
} catch (TimeoutException exception) {
// ...
}
return myString;
}
我用 Mockito 尝试了一些东西,但它们不起作用。意思是,超时不会发生。
SomeService someService = mock(SomeService.class);
Mockito.when(someService.getString()).thenAnswer(invocation -> {
Thread.sleep(50000);
return "response";
});
doAnswer(new AnswersWithDelay(50000, new Returns("string"))).when(someService).getString();
有人可以提供一些关于我如何编写会遇到
TimeoutException
的测试的见解吗?