K |
K |
(Der Versionsvergleich bezieht 3 dazwischenliegende Versionen mit ein.) |
Zeile 1: |
Zeile 1: |
- | {{Hierarchy header}}
| + | Diese Seite ist umgezogen: [http://de.accunit.access-codelib.net/Tests_erstellen Tests erstellen] |
- | Zum Erstellen von Tests werden Klassen verwendet. Alle öffentlichen Methoden einer Testklasse werden von SimplyVBUnit als Test-Methode verwendet.
| + | |
- | | + | |
- | ==== Einfachste Form einer Testklasse ====
| + | |
- | <source lang="vb">
| + | |
- | 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
| + | |
- | </source>
| + | |
- | | + | |
- | 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:
| + | |
- | <source lang="vb">
| + | |
- | ' AccUnit:TestClass
| + | |
- | </source>
| + | |
- | | + | |
- | ==== 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.
| + | |
- | <source lang="vb">
| + | |
- | Implements SimplyVBUnit.ITestCaseData
| + | |
- | | + | |
- | Private Sub ITestCaseData_GetTestData(ByVal test As SimplyVBUnit.TestDataBuilder)
| + | |
- | ' hier erfolgt die Übergabe der Test-Werte
| + | |
- | End Sub
| + | |
- | </source>
| + | |
- | 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.
| + | |
- | <source lang="vb">
| + | |
- | 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
| + | |
- | </source>
| + | |
- | 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.
| + | |
- | <source lang="vb">
| + | |
- | '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)
| + | |
- | </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 über AccUnit ausführen zu lassen.
| + | |
- | | + | |
- | | + | |
- | {{Hierarchy footer}}
| + | |
- | {{related links|links=[[AccUnit|AccUnit Startseite]] ♦ [[AccUnit:Datengetriebene_Tests_in_SimplyVBUnit_v3|Funktionsweise von datengetriebenen Tests in SimplyVBUnit v3]]}}
| + | |