Testen von Events

Testen von Access-Anwendungen

Testen von Events

Beitragvon Christoph Jüngling » Sa 12. Mär 2011, 18:26

Moin,

ab und zu lernt man ja was auf so einer AEK :ugeek: Also habe ich irgendwann mal angefangen, meine Klassen per Event miteinander reden zu lassen.

Dann hat mir mal "jemand" etwas vom Testen erzählt, und nun wollte ich beides zusammenbringen: Eine Klasse wirft ein Event, meine Testklasse fängt es und überprüft, ob es das richtige ist und evtl. auch ob es die richtigen Parameter mitliefert.

Für Fehler (Errors, Exceptions) funktioniert das ja schon mit "Assert.Throws", aber wie geht das mit Events?

cu

Chris
Christoph Jüngling
Tester
 
Beiträge: 43
Registriert: Mi 13. Okt 2010, 08:29
Wohnort: Kassel, Deutschland, Europa, Terra
Accessversion: 2003, 2010
Access-Erfahrung: Experte

Re: Testen von Events

Beitragvon Josef Pötzl » Sa 12. Mär 2011, 18:56

Hallo!

Hast du es nicht gerade eine funktionierende Variante beschrieben? ;)

Im Prinzip könnte man eine Mock-Klasse schreiben, die das Abfangen des Ereignisses übernimmt und aus der man später z. B. über Eigenschaften abfragen kann, ob alles passte.
MIr ist das allerdings zu aufwendig, daher nutze ich meistens die Testklasse selbst um auf die Ereignisse zu reagieren.
In Modulvariablen speichere ich die benötigten Daten ab, die ich im Assert-Ausdruck verwende bzw. stelle deren Wert ein, um ihn in der Ereignisbehandlung zu verwenden.

Beispiel:
Code: Alles auswählen

Private WithEvents m_UserHandler As UserHandler

[...] '  UserHandler-Instanz wird über Setup() erzeugt und über Teardown() wieder zerstört. Die Referenz ist in m_UserHandler gespeichert.

Public Sub UserName_ReChangeUserNameInEvent_UseNameAssignedByEventProc()

   Const Expected As String = "xyz"
   m_NewUserName = "xyz"

   Dim Actual As String
   m_UserHandler.UserName = "abc"
   
   Actual = m_UserHandler.UserName
   Assert.That Actual, Iz.EqualTo(Expected)

End Sub

Private Sub m_UserHandler_UserBeforeChange(ByRef NewUserName As String, Cancel As Boolean)
   If StrPtr(m_NewUserName) <> 0 Then
      NewUserName = m_NewUserName
   End If
End Sub
 


mfg
Josef
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: Testen von Events

Beitragvon Christoph Jüngling » So 13. Mär 2011, 12:37

Irgendwie naheliegend, manchmal ist man ja echt blind :oops:
Christoph Jüngling
Tester
 
Beiträge: 43
Registriert: Mi 13. Okt 2010, 08:29
Wohnort: Kassel, Deutschland, Europa, Terra
Accessversion: 2003, 2010
Access-Erfahrung: Experte


Zurück zu AccUnit