@Test
public void participateMethodIsCalledFailed()  throws Throwable {

  RuntimeException oops = new RuntimeException("oops");
  when(joinPoint.proceed()).thenThrow(oops);
  try {
    aspect.advise(joinPoint, participate);
    expectFailing(RuntimeException.class);
  } catch (RuntimeException e) {
    assertThat(e, is(oops));
  }
  assertThat(participationStartedEvents.size(), is(1));
  ParticipationStartedEvent participationStartedEvent = participationStartedEvents.get(0);
  assertThat(participationStartedEvent.getGlobalTxId(), is(globalTxId));
  assertThat(participationStartedEvent.getParentTxId(), is(localTxId));
  assertThat(participationStartedEvent.getLocalTxId(), is(newLocalTxId));
    assertThat(participationStartedEvent.getStatus(), is(TransactionStatus.Failed));
    assertThat(participationStartedEvent.getCancelMethod(), is(cancelMethod));
    assertThat(participationStartedEvent.getConfirmMethod(), is(confirmMethod));
  assertThat(omegaContext.globalTxId(), is(globalTxId));
  assertThat(omegaContext.localTxId(), is(localTxId));
}