내에서 어떻게 유닛 테스트 ListenableFuture 나는이 같은 Guava LoadingCache을 사용하고 있습니다 :구아바 LoadingCache : CacheLoader
@Inject
private ExecutorService executorService;
private LoadingCache<CacheKey, ResponseEntity<String>> constructCache() {
return CacheBuilder.newBuilder()
.maximumSize(100)
.expireAfterWrite(15, TimeUnit.MINUTES)
.build(
new CacheLoader<CacheKey, ResponseEntity<String>>() {
@Override
public ResponseEntity<String> load(CacheKey cacheKey) throws Exception {
return loadResource(cacheKey);
}
@Override
public ListenableFuture<ResponseEntity<String>> reload(final CacheKey cacheKey, ResponseEntity<String> old) {
ListenableFutureTask<ResponseEntity<String>> task = ListenableFutureTask.create(new Callable<ResponseEntity<String>>() {
@Override
public ResponseEntity<String> call() throws Exception {
// this line here!
return loadResource(cacheKey);
}
});
executorService.execute(task);
return task;
}
}
);
}
private ResponseEntity<String> loadResource(CacheKey cacheKey) {
// ...
// external call
// ...
}
내가 제외한 모든 라인을 테스트 할 수 있습니다. Runnable 작업 내에서 단위 테스트 라인 return loadResource(cacheKey)
을 어떻게 테스트합니까? 지금 비동기 새로 고침이 실제로 일어나고 있는지 확인하기 위해 executorService를 조롱하고 있습니다.