Gemeinsam zu mehr Effizienz in der Anwendungserstellung
K (→AccUnit Integration) |
K (→Einfachste Form einer Testklasse) |
||
Zeile 5: | Zeile 5: | ||
<source lang="vb"> | <source lang="vb"> | ||
Option Explicit | Option Explicit | ||
+ | |||
+ | ' AccUnit:TestClass | ||
Public Sub SimpleTestProc_Success() | Public Sub SimpleTestProc_Success() | ||
Zeile 19: | Zeile 21: | ||
</source> | </source> | ||
- | + | AccUnit:TestClass sorgt dafür, dass dieser Test vom AccUnit-Add-In aus den Klassen des VB-Projektes erkannt wird. | |
- | + | ||
- | + | ||
- | + | ||
==== Row Tests ==== | ==== Row Tests ==== |
Zum Erstellen von Tests werden Klassen verwendet. Alle öffentlichen Methoden einer Testklasse werden von SimplyVBUnit als Test-Methode verwendet.
Option Explicit ' AccUnit:TestClass Public Sub SimpleTestProc_Success() Assert.That 1, Iz.EqualTo(1) End Sub Public Sub SimpleTestProc_Failure() Assert.That 1, Iz.EqualTo(0) End Sub
AccUnit:TestClass sorgt dafür, dass dieser Test vom AccUnit-Add-In aus den Klassen des VB-Projektes erkannt wird.
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