In der Version 0.9.5 gibt es nun eine Möglichkeit die MsgBox-Funktion abzufangen und mit einer TestMessageBox zu ersetzen.
Damit wird es möglich, dass man im Test die zu bestätigenden Msgbox-Clicks (VbMsgBoxResult) vorab einstellt und nicht mehr selbst klicken muss, falls im zu testenden Code eine MsgBox zum Einsatz kommt.
Aufgrund dieser Änderung musste allerdings das Interface AccUnit_Integration.ITestManagerBridge erweitert werden.
In bestehenden Testklassen ist folgende Prozedur zu ergänzen:
- Code: Alles auswählen
Private Function ITestManagerBridge_GetTestManager() As AccUnit_Integration.ITestManagerComInterface
Set ITestManagerBridge_GetTestManager = TestManager
End Function
Aktivierung der TestMessageBox
Variante 1: Einstellen der Klicks für die gesamte Test-Prozedur, egal ob mit oder ohne Row-Test
- Code: Alles auswählen
'AccUnit:ClickingMsgBox(vbNo, vbOk)
Public Sub TestMethode()
...
Variante 2: Einstellen der Klicks nur für den jeweiligen Row-Test
- Code: Alles auswählen
'AccUnit:Row("A", "B").ClickingMsgBox(vbOk).Name = "A, B / vbOk"
Public Sub rowTestMethode(ByVal Param1 As String, ByVal Expected as String)
...
Bei Bedarf kann man auf ein Ereignis reagieren, falls man z. B. die Msgbox-Parameter ins Debug-Fenster ausgeben möchte:
- Code: Alles auswählen
Private WithEvents m_TestMessageBox As AccUnit_Integration.TestMessageBox
Public Sub Setup()
Set m_TestMessageBox = TestManager.TestMessageBox
End Sub
Public Sub Teardown()
Set m_TestMessageBox = Nothing
End Sub
Private Sub m_TestMessageBox_Displayed(ByVal Prompt As Variant, ByVal Buttons As Long, ByVal Title As Variant, _
ByVal HelpFile As Variant, ByVal Context As Variant, _
ByRef MsgBoxResult As Long)
Debug.Print Nz(Prompt, "(Kein Text)"), MsgBoxResult
End Sub
mfg
Josef