LoggingReader extends FilterReader { @Override public long skip(long len) throws IOException { final long count = super.skip(len); level.log(logger, "skip({}) : {}", len, count); return count; } LoggingReader(@Nonnull Reader reader, Logger logger, @Nonnull LogLevel level);  LoggingReader(@Nonnull Reader reader, @Nonnull Class<?> context, @Nonnull LogLevel level); @Override int read(); @Override int read(char[] chars, int off, int len); @Override long skip(long len); @Override boolean ready(); @Override boolean markSupported(); @Override void mark(int readAheadLimit); @Override void reset(); @Override void close();  }
@Test public void whenSkip_thenCallsDelegate() throws IOException { int len = 0; loggingReader.skip(len); verify(delegateReader, only()).skip(len); }