@Test
public void delegateException() throws InterruptedException {

  doThrow(RuntimeException.class).when(delegate).execute(any(Runnable.class));
  underTest = new BlockingExecutor(delegate, semaphore);
  try {
    underTest.execute(runnable);
    fail();
  } catch (RuntimeException e) {
    InOrder inOrder = inOrder(delegate, semaphore);
    inOrder.verify(semaphore).acquire();
    inOrder.verify(delegate).execute(any(Runnable.class));
    inOrder.verify(semaphore).release();
  }
}