Gemeinsam zu mehr Effizienz in der Anwendungserstellung
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]] ♦ [[AccUnit:Datengetriebene_Tests_in_SimplyVBUnit_v3|Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3]]}} | {{related links|links=[[AccUnit|AccUnit Startseite]] ♦ [[AccUnit:Datengetriebene_Tests_in_SimplyVBUnit_v3|Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3]]}} |
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)
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 Startseite ♦ Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3