### Question:
ComponentInfo { public String classCanonicalName() { return this.joinPoint.getSignature().getDeclaringType().getCanonicalName(); } ComponentInfo(ComponentType componentType, ProceedingJoinPoint joinPoint); ComponentType type(); String classSimpleName(); String classCanonicalName(); String methodName(); List<Class> methodParamTypesList(); List<String> methodParamNamesList(); List<Object> methodParamValuesList(); String methodReturnType(); long totalExecutionTime(); void setTotalExecutionTime(long totalExecutionTime); int totalEmittedItems(); void setTotalEmittedItems(int totalEmittedItems); boolean isSynchronous(); String subscribeOnScheduler(); void setSubscribeOnScheduler(String schedulerName); String subscribeOnThread(); void setSubscribeOnThread(String subscribeOnThread); String observeOnScheduler(); void setObserveOnScheduler(String schedulerName); String observeOnThread(); void setObserveOnThread(String observeOnThread);  }### Answer:
@Test public void classCanonicalName() { when(signature.getDeclaringType()).thenReturn(Observable.class); assertEquals(componentInfo.classCanonicalName(), "io.reactivex.Observable"); }