Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Unittest von OnWhatever Events?

  Alt 17. Dez 2014, 17:37
...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.
  Mit Zitat antworten Zitat