Gemeinsam zu mehr Effizienz in der Anwendungserstellung
Zum Erstellen von Tests werden Klassen verwendet. Alle öffentlichen Methoden einer Testklasse werden von SimplyVBUnit als Test-Methode verwendet.
Option Explicit Public Sub SimpleTestProc_Success() Assert.That 1, Iz.EqualTo(1) End Sub Public Sub SimpleTestProc_Failure() Assert.That 1, Iz.EqualTo(0) End Sub
Falls dieser Test vom AccUnit-Add-In automatisch aus den Klassen des VB-Projektes erkannt werden soll, ist noch folgende Zeile im Kopfbereich der Klasse einzufügen:
' AccUnit:TestClass
Bei Row Tests wird eine Testmethode mit unterschiedlichen Parameterwerten ausgeführt. Damit SimplyVBUnit diese Tests erkennt, muss SimplyVBUnit.ITestCaseData als Schnittstelle verwendet werden.
Implements SimplyVBUnit.ITestCaseData Private Sub ITestCaseData_GetTestData(ByVal test As SimplyVBUnit.TestDataBuilder) ' hier erfolgt die Übergabe der Test-Werte End Sub
Um die Übergabe der Testwerte etwas übersichtlicher zu gestalten, kann noch zusätzlich AccUnit_Integration.ITestManagerBridge implementiert werden. Damit wird es möglich, die Testwerte als Kommentarzeile oberhalb der jeweiligen Testmethode zu schreiben.
Implements AccUnit_Integration.ITestManagerBridge Implements SimplyVBUnit.ITestCaseData Private TestManager As AccUnit_Integration.TestManager Private Sub ITestManagerBridge_InitTestManager(ByVal NewTestManager As AccUnit_Integration.ITestManagerComInterface) Set TestManager = NewTestManager End Sub Private Sub ITestCaseData_GetTestData(ByVal test As SimplyVBUnit.TestDataBuilder) TestManager.GetTestData test End Sub 'TestManager.Row("a", "b", "ab") 'TestManager.Row("abc", "def", "abcdef") Public Sub RowTest_Sub_Strings(ByVal x As String, ByVal y As String, ByVal expected As String) Dim actual As String actual = x + y Assert.That actual, Iz.EqualTo(expected) End Sub
Die Dummy-Methode Row ermöglicht die Nutzung von IntelliSense, wenn die Code-Zeile erst nach dem Schreiben der Parameterwerte auskommentiert wird.
Als weitere Variante kann statt TestManager.Row der Prozedurname verwendet werden.
'RowTest_Sub_Strings("a", "b", "ab") 'RowTest_Sub_Strings("abc", "def", "abcdef") Public Sub RowTest_Sub_Strings(ByVal x As String, ByVal y As String, ByVal expected As String)
Um die volle Funktionsfähigkeit von AccUnit zu nutzen, ist es erforderlich, zusätzlich zu ITestManagerBridge noch SimplyVBUnit.ITestFixture zu implementieren.
Option Compare Text Option Explicit 'AccUnit:TestClass '#################################################################### ' Interfaces ' 'SimplyVBUnit: ITestFixture.AddTestCases Implements SimplyVBUnit.ITestFixture 'AccUnit: test manager Implements AccUnit_Integration.ITestManagerBridge Private TestManager As AccUnit_Integration.TestManager Private Sub ITestManagerBridge_InitTestManager(ByVal NewTestManager As AccUnit_Integration.ITestManagerComInterface) Set TestManager = NewTestManager End Sub Private Sub ITestFixture_AddTestCases(ByVal SvuTestCaseCollector As SimplyVBUnit.TestCaseCollector) TestManager.AddTestCases SvuTestCaseCollector End Sub '#################################################################### ' Tests ' ...
Mit diesem Klassenkopf wird es möglich, einzelne Tests über AccUnit ausführen zu lassen.
Weiterführende Links: AccUnit Startseite ♦ Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3