일부 클래스의 다음 구현을 감안할 때 : 현재 그것의 외부 someSpecialExecutor
에서 실행하지 않을 때는 항상 현재 스레드에서 동 기적으로 전달 된 실행 가능한을 실행일부가 실행 프로그램의 본문으로 호출되었는지 확인하는 방법은 무엇입니까?
private Executor someSpecialExecutor;
private SomeService someService;
public void foo() {
someSpecialExecutor.execute(() -> someService.bar());
}
이 someSpecialExecutor
한다고 가정을, 어떻게 someService.bar()
가 호출되어 있는지 확인 않습니다 ?
Runnable
을 구현하는 클래스를 만들고 실행자가이 클래스의 인스턴스를 전달하고 Runnable
구현의 테스트에서 someService.bar()
의 호출을 확인하는지 확인할 수 있습니다. 그러나 나는이 단일 목적을 위해 추가 수업을 만드는 것을 피하고 싶습니다.
"외부에서가 아니라 someSpecialExecutor에서 현재 실행 중일 때 호출됩니까?" - 테스트에서'bar()'를 (명시 적으로) 호출하지 않았습니다. 따라서 *'bar()'가 전혀 실행되면'execute()'에서 시작해야합니다. – JimmyB
@JimmyB 구현이 다음과 같이 변경되면 테스트를 실패합니다.'someSpecialExecutor.execute (() -> {}); someService.bar();' – SpaceTrucker
'bar'가 다른 * executor의 내부에서 호출되는지 여부가 중요합니까? 다른 말로하면, 그것은 특별히'someSpecialExecutor'일까요, 아니면 "직접 호출"과 "서비스를 통한 호출"에 관심이 있습니까? – Thomas