@Test
public void testStatsLoggingOnError() {

  DummySerializer serializer = mock(DummySerializer.class);
  SerializerProcessor processor = new SerializerProcessor(serializer);
  doThrow(new RuntimeException()).when(serializer).serialize("foo");
  /*
   * Mock the Stat object
   */
  Stat runtimeStat = mock(Stat.class);
  Stat successStat = mock(Stat.class);
  Stat errorStat = mock(Stat.class);
  processor.setRuntimeStat(runtimeStat);
  processor.setSuccessCountStat(successStat);
  processor.setErrorCountStat(errorStat);
  try {
    processor.serialize("foo");
  } catch (Exception e) {
    // expected
  }
  /*
   * Verify start, stop are called, increment error count and never increment success count.
   */
  verify(runtimeStat, times(1)).start();
  verify(runtimeStat, times(1)).stop();
  verify(successStat, never()).increment();
  verify(errorStat, times(1)).increment();
}