Wiki der Access Code Library

Gemeinsam zu mehr Effizienz in der Anwendungserstellung

AccUnit:Tests erstellen

Aus Access Code Library
Wechseln zu: Navigation, Suche

Zum Erstellen von Tests werden Klassen verwendet. Alle öffentlichen Methoden einer Testklasse werden von SimplyVBUnit als Test-Methode verwendet.

Einfachste Form einer Testklasse

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

Row Tests

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)

AccUnit Integration

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 StartseiteFunktionsweise von datengetriebenen Tests in SimplyVBUnit v3