@Test(expected = EventStoreException.class)
 public void testFixtureGeneratesExceptionOnWrongEvents_WrongSequence() {
   String identifier = UUID.randomUUID().toString();
   fixture
       .getEventStore()
       .publish(
           new GenericDomainEventMessage<>("test", identifier, 0, new StubDomainEvent()),
           new GenericDomainEventMessage<>("test", identifier, 2, new StubDomainEvent()));
 }
 @Test(expected = EventStoreException.class)
 public void testFixtureGeneratesExceptionOnWrongEvents_DifferentAggregateIdentifiers() {
   fixture
       .getEventStore()
       .publish(
           new GenericDomainEventMessage<>(
               "test", UUID.randomUUID().toString(), 0, new StubDomainEvent()),
           new GenericDomainEventMessage<>(
               "test", UUID.randomUUID().toString(), 0, new StubDomainEvent()));
 }
  @Test
  public void testAggregateIdentifier_IdentifierAutomaticallyDeducted() {
    fixture.registerAggregateFactory(mockAggregateFactory);
    fixture.registerAnnotatedCommandHandler(
        new MyCommandHandler(fixture.getRepository(), fixture.getEventBus()));
    fixture
        .given(new MyEvent("AggregateId", 1), new MyEvent("AggregateId", 2))
        .when(new TestCommand("AggregateId"))
        .expectEvents(new MyEvent("AggregateId", 3));

    DomainEventStream events = fixture.getEventStore().readEvents("AggregateId");
    for (int t = 0; t < 3; t++) {
      assertTrue(events.hasNext());
      DomainEventMessage next = events.next();
      assertEquals("AggregateId", next.getAggregateIdentifier());
      assertEquals(t, next.getSequenceNumber());
    }
  }