如何使用mockito和junit为ExecuterService编写测试用例?
protected void updateRequest(String request) {
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(() -> {
service.callGattuService(request);
});
executor.shutdown();
}
此前此方法不是Multithreaded,而是直接调用service.callGattuService(),后面是测试用例。
@Test
public void updateGattu() throws SystemException, SocketException, IOException {
when(service.callGattuService("11")).thenReturn(something);
testSubject.updateRequest(request)
verify(service, times(1)).callGattuService("11");
}
我不确定如何操作它以便可以检测/调用ExecuterService。
答案 0 :(得分:1)
在这种情况下,最简单直接的解决方案是在验证之前添加延迟而不更改测试逻辑,因为您已经检查了内部方法是否使用特定参数调用,无论是否通过执行程序。
@Test
public void updateGattu() throws SystemException, SocketException, IOException {
testSubject.updateRequest("11")
verify(service, after(2*1000).times(1)).callGattuService("11");
}
不要忘记监视您的服务。希望它有所帮助!
修改强> 在之前版本的mockito-all(1.9.5)中,这里有类似的Mockito.timeout(int)方法,可以像这样使用
@Test
public void updateGattu() throws SystemException, SocketException, IOException {
testSubject.updateRequest("11")
verify(service, timeout(2*1000)).callGattuService("11");
}