### Question:
SimpleProcessLogger implements ComponentLog { @Override public void info(String msg, Throwable t) { if (!isInfoEnabled()) { return; } msg = "{} " + msg; final Object[] os = {component, t.toString()}; logger.info(msg, os); if (logger.isDebugEnabled()) { logger.info("", t); } logRepository.addLogMessage(LogLevel.INFO, msg, os, t); } SimpleProcessLogger(final String componentId, final Object component); @Override void warn(String msg, final Throwable t); @Override void warn(String msg, Object[] os); @Override void warn(String msg, Object[] os, final Throwable t); @Override void warn(String msg); @Override void trace(String msg, Throwable t); @Override void trace(String msg, Object[] os); @Override void trace(String msg); @Override void trace(String msg, Object[] os, Throwable t); @Override boolean isTraceEnabled(); @Override boolean isDebugEnabled(); @Override boolean isInfoEnabled(); @Override boolean isWarnEnabled(); @Override boolean isErrorEnabled(); @Override void info(String msg, Throwable t); @Override void info(String msg, Object[] os); @Override void info(String msg); @Override void info(String msg, Object[] os, Throwable t); @Override String getName(); @Override void error(String msg, Throwable t); @Override void error(String msg, Object[] os); @Override void error(String msg); @Override void error(String msg, Object[] os, Throwable t); @Override void debug(String msg, Throwable t); @Override void debug(String msg, Object[] os); @Override void debug(String msg, Object[] os, Throwable t); @Override void debug(String msg); @Override void log(LogLevel level, String msg, Throwable t); @Override void log(LogLevel level, String msg, Object[] os); @Override void log(LogLevel level, String msg); @Override void log(LogLevel level, String msg, Object[] os, Throwable t);  }### Answer:
@Test public void validateDelegateLoggerReceivesThrowableToStringOnInfo() { componentLog.info("Hello {}", e); verify(logger, times(1)).info(anyString(), argThat(new MyVarargMatcher())); }