...und in den jeweiligen Events das Intervall abprüfst..
Ich würde im Event eher den Aufrufzeitpunkt setzen und im Assert-Teil des
Unit-Tests dann das Timing prüfen:
Pseudocode:
Delphi-Quellcode:
// Arrange
unitUnderTest := TMyObject.Create;
unitUnderTest.OnEvent := TestEvent;
StartTime := Now;
EventWasFired := False;
EventTime := 0;
// Act
unitUnderTest.TriggerTheEvent();
// This is nonworking pseudocode but you should get the point
WaitUntil (EventWasFired or (Now-StartTime > maxTimeToWait));
// Assert
Assert.That(EventWasFired , 'The Event was not called');
Assert.That(EventTime-StartTime <= TenSeconds, 'The Event was not called in Time');
...
Procedure TTestCase.TestEvent(Sender : TObject);
Begin
EventTime := Now;
EventWasFired := True;
End;
Edit: Du solltest den Event in gar keinem Thread starten. Das ist ja kein Integrationstest, der die 'Blackbox' (Thread und Objekt) testet, sondern nur das Abfeuern des Events.