9.4 Unit Tests
Wenn Sie an einem Projekt arbeiten, ergeben sich immer wieder Änderungen im Code. Die vielen Abhängigkeiten Ihrer Klassen untereinander führen schnell dazu, dass Korrekturen an einer Stelle zu Problemen an einer anderen führen. Hier setzen automatisierte Tests an, die Sie nach Änderungen durchlaufen lassen, um festzustellen, ob eine Korrektur Seiteneffekte hat. Ich verwende folgendes einfaches Testprojekt:
'...\Lokal\Debugging\Programm.vb |
Namespace Lokal Module Programm Sub Main() Dim o As New Klasse() Console.WriteLine(o.Methode(3, 4)) Console.ReadLine() End Sub End Module End Namespace
'...\Lokal\Debugging\Klasse.vb |
Option Strict On Namespace Lokal Public Class Klasse Function Methode(ByVal i As Integer, ByVal j As Integer) As Integer Return i + j End Function End Class End Namespace
Als Erstes erstellen wir einen Test über das in Abbildung 9.7 gezeigte Kontextmenü des Codefensters.
Abbildung 9.7 So starten Sie das Erstellen von Tests.
Im sich öffnenden Dialog (siehe Abbildung 9.8) wählen wir die zu testenden Komponenten.
Abbildung 9.8 Testauswahl
Da ein eigenes Testprojekt erstellt wird und eine der Methoden implizit den Modifizierer Friend hat, müssen wir im folgenden Dialog (siehe Abbildung 9.9) einer Sichtbarkeitserhöhung zustimmen.
Abbildung 9.9 Sichtbarkeit erhöhen
Daraufhin wird ein neues Testprojekt erzeugt, dem ich den Namen DebuggingTest gegeben habe (siehe Abbildung 9.10).
Abbildung 9.10 Testprojekte
Damit nicht gleich der erste Test »scheitert«, ändern wir noch die Datei KlasseTest.vb ein wenig. Die Aufrufe Assert.Inconclusive werden auskommentiert, und die Methode zum Testen der Methode wird durch Werte für die Ein- und Ausgabe ergänzt (Werte 3, 4 und 7).
<TestMethod()> _ Public Sub MethodeTest() Dim target As Klasse = New Klasse ' TODO: Passenden Wert initialisieren Dim i As Integer = 3 ' TODO: Passenden Wert initialisieren Dim j As Integer = 4 ' TODO: Passenden Wert initialisieren Dim expected As Integer = 7 ' TODO: Passenden Wert initialisieren Dim actual As Integer actual = target.Methode(i, j) Assert.AreEqual(expected, actual) 'Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.") End Sub
Nun können wir über das in Abbildung 9.11 gezeigte Kontextmenü des Projekts »DebuggingTest« den Test starten.
Abbildung 9.11 Test starten
Das Testergebnis im Fenster Testergebnisse ist zufriedenstellend. Die Methode Main kann nicht gestestet werden, weil sie keinen Rückgabewert hat. Abbildung 9.12 zeigt, dass die beiden anderen Tests erfolgreich verliefen.
Abbildung 9.12 Dieser Test war erfolgreich.
Zum Schluss ändern wir unsere Testmethode. Statt Return i + j verwenden wir Return i + 2 * j und starten den Test erneut über das Kontextmenü des Projekts »DebuggingTest«. Das Testergebnis zeigt das Problem (siehe Abbildung 9.13).
Abbildung 9.13 Dieser Test ist gescheitert.
Im Menü Test finden Sie einige Punkte, um den Test zu verfeinern.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.