@Test(expected = NullPointerException.class)
  public void testCreateSenderFailNPE() throws Exception {

    mockSupports();
    when(senderProvider.create(any(GelfSenderConfiguration.class)))
        .thenThrow(new NullPointerException());

    sut.createSender(assembler, errorReporter);
  }
  @Test
  public void testCreateSenderFailIOException() throws Exception {

    mockSupports();
    when(senderProvider.create(any(GelfSenderConfiguration.class))).thenThrow(new IOException());

    GelfSender result = sut.createSender(assembler, errorReporter);
    assertNull(result);

    verify(errorReporter).reportError(anyString(), any(IOException.class));
  }
  @Test
  public void testCreateSender() throws Exception {

    when(assembler.getHost()).thenReturn(THE_HOST);
    mockSupports();
    when(senderProvider.create(any(GelfSenderConfiguration.class))).thenReturn(sender);

    GelfSender result = sut.createSender(assembler, errorReporter);

    assertSame(sender, result);
  }
 private void mockSupports() {
   when(senderProvider.supports(THE_HOST)).thenReturn(true);
 }