@Test
public void run_invokeThrows_moduleErrorGetsCalled() throws InvocationTargetException, IllegalAccessException {

    // given
    NullPointerException npe = new NullPointerException();
    doThrow(npe).when(invoker).invoke(isA(InvocationContext.class));

    try {
        // when
        sut.run();
    } catch (NullPointerException ex) {
        // got you
    }

    // then
    verify(module).onError(context, theMessage, npe);
}