Wiki der Access Code Library

Gemeinsam zu mehr Effizienz in der Anwendungserstellung

AccUnit:Tests erstellen

Aus Access Code Library
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (Row Tests)
K
Zeile 69: Zeile 69:
Public Sub RowTest_Sub_Strings(ByVal x As String, ByVal y As String, ByVal expected As String)
Public Sub RowTest_Sub_Strings(ByVal x As String, ByVal y As String, ByVal expected As String)
</source>
</source>
 +
 +
==== AccUnit Integration ====
 +
Umd die volle Funktionsfähigkeit von AccUnit zu nutzen, ist es erforderlich zustätzlich zu ''ITestManagerBridge'' noch ''SimplyVBUnit.ITestFixture'' zu implementieren.
 +
<source lang="vb">
 +
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
 +
'
 +
...
 +
</source>
 +
Mit diesem Klassenkopf wird es möglich, einzelne Tests und deren Methoden über AccUnit ausführen zu lassen.
 +
{{Hierarchy footer}}
{{Hierarchy footer}}
{{related links|links=[[AccUnit|AccUnit Startseite]] &diams; [[AccUnit:Datengetriebene_Tests_in_SimplyVBUnit_v3|Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3]]}}
{{related links|links=[[AccUnit|AccUnit Startseite]] &diams; [[AccUnit:Datengetriebene_Tests_in_SimplyVBUnit_v3|Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3]]}}

Version vom 18:55, 19. Sep. 2010

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

Umd die volle Funktionsfähigkeit von AccUnit zu nutzen, ist es erforderlich zustä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 und deren Methoden über AccUnit ausführen zu lassen.


Weiterführende Links: AccUnit StartseiteFunktionsweise von datengetriebenen Tests in SimplyVBUnit v3