Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese exemplarische Vorgehensweise führt Sie durch das Erstellen, Ausführen und Anpassen verschiedener Tests mit Testtools in Team System. Sie beginnen mit einem C#-Projekt in der Entwicklungsphase und erstellen Tests zur Codeüberprüfung. Anschließend führen Sie die Tests aus und überprüfen die Ergebnisse. Basierend auf den Ergebnissen können Sie daraufhin Änderungen am Projektcode vornehmen und die Tests erneut ausführen.
Hinweis
Informationen zum Ausführen von Tests in einer Befehlszeile finden Sie unter Exemplarische Vorgehensweise: Verwenden des Befehlszeilen-Testprogramms.
Im Verlauf dieser exemplarischen Vorgehensweise führen Sie folgende Aufgaben aus:
Vorbereiten eines Projekts "Bank Account", das in der exemplarischen Vorgehensweise verwendet werden soll.
Öffnen eines vorhandenes Projekts.
Erstellen von Komponententests für öffentliche und private Methoden.
Ausführen dieser Tests zum Überprüfen des Codes.
Suchen und Beheben von Fehlern in den Tests.
Suchen und Beheben von Fehlern im Code.
Vorbereitungsmaßnahmen
- Das Projekt Woodgrove Bank. Siehe Beispiel für einen Komponententest.
Vorbereiten der exemplarischen Vorgehensweise
So bereiten Sie die exemplarische Vorgehensweise vor
Öffnen Sie Visual Studio 2005 Team Edition für Tester.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Das Dialogfeld Neues Projekt wird angezeigt.
Klicken Sie unter Projekttypen auf Visual C#.
Klicken Sie unter Vorlagen auf Klassenbibliothek.
Geben Sie in der Zeile Name den Wert Bank ein, und klicken Sie auf OK.
Hinweis
Wenn der Name "Bank" bereits verwendet wird, wählen Sie einen anderen Namen für das Projekt aus.
Das neue Projekt Bank wird erstellt und im Projektmappen-Explorer angezeigt.
Doppelklicken Sie im Projektmappen-Explorer auf die Datei Class1.cs, um die Datei im Code-Editor Visual Studio zu öffnen.
Kopieren Sie den Quellcode aus Beispiel für einen Komponententest.
Ersetzen Sie den ursprünglichen Inhalt von Class1.cs mit dem Code aus Beispiel für einen Komponententest.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Sie haben nun ein Projekt mit dem Namen Bank erstellt. Dieses Projekt enthält zu testenden Quellcode und Tools, mit denen der Quellcode getestet werden kann. Der Namespace für Bank (BankAccountNS) enthält die öffentliche BankAccount-Klasse, deren Methoden Sie im Folgenden testen werden.
Erstellen eines Komponententests
Voraussetzung: Führen Sie die im Vorbereiten der exemplarischen Vorgehensweise-Verfahren angegebenen Schritte aus.
So erstellen Sie einen Komponententest
Doppelklicken Sie im Projektmappen-Explorer im Projekt Bank auf die Datei Class1.cs.
Die Quelldatei wird zum Anzeigen und Bearbeiten geöffnet.
Hinweis
Das Projekt Bank enthält den zu testenden Code, der auch als Code unter Test, oder CUT, bezeichnet wird.
Führen Sie in der Datei Class1.cs in der BankAccount-Klasse einen Bildlauf zur Debit()-Methode durch.
Klicken Sie mit der rechten Maustaste auf die Debit()-Methode, und wählen Sie Komponententests erstellen aus.
Das Dialogfeld Komponententests erstellen wird angezeigt.
Unter Aktuelle Auswahl werden in einer Struktur die Klassen- und Memberhierarchie der Assembly angezeigt, die die BankAccount-Klasse enthält. Sie können auf dieser Seite Komponententests für eine beliebige Auswahl der angezeigten Members generieren und ein Testprojekt auswählen, in dem die generierten Komponententests platziert werden sollen.
In der Struktur ist nur die Debit()-Methode ausgewählt. Behalten Sie die Auswahl bei, und wählen Sie zusätzlich die Credit()-Methode aus.
Klicken Sie unter Ausgabeprojekt auf Neues Visual C#-Testprojekt erstellen.
Klicken Sie auf Einstellungen.
Das Dialogfeld Testgenerierungseinstellungen wird angezeigt. Unter Namenseinstellungen können Sie die Benennungsoptionen für das Generieren der Testdateien, Testklassen und Testmethoden anpassen. Unter Allgemein können Sie verschiedene weitere Aspekte der Testgenerierung ändern. Behalten Sie die Standardwerte für diese Einstellungen bei, und klicken Sie auf OK.
Klicken Sie im Dialogfeld Komponententests generieren auf OK.
Das Dialogfeld Neues Testprojekt wird angezeigt.
Übernehmen Sie den Standardnamen, und klicken Sie auf Erstellen.
Ein Testprojekt mit dem Namen TestProject1 wird erstellt und im Projektmappen-Explorer angezeigt.
Dem Testprojekt wird eine Datei mit dem Namen Class1Test.cs hinzugefügt, die eine Testklasse enthält. Diese Klasse wiederum beinhaltet eine Initialisierungsmethode, eine Bereinigungsmethode sowie Methoden zum Testen der Methoden Debit() und Credit().
Hinweis
Jeder Testmethode wird automatisch das TestMethod()-Attribut zugewiesen. Jeder Test entspricht einer einzelnen zu testenden Methode im CUT. Testmethoden werden in einer Testklasse zusammengefasst, der das TestClass()-Attribut zugewiesen wird.
Geben Sie in Class1Test.cs Werte für die zu testenden Variablen an. Führen Sie einen Bildlauf zur DebitTest-Methode durch, in die drei // TODO-Zeilen eingefügt wurden. Diese Zeilen geben die festzulegenden Variablen an, in diesem Fall customerName, balance und amount. Welche Werte sollten Sie verwenden? Um dies zu beantworten, benötigen Sie die Werte, die beim Ausführen der Anwendung in den Variablen gespeichert werden.
Doppelklicken Sie im Projektmappen-Explorer auf die Datei Class1.cs, und führen Sie nach dem Öffnen der Datei einen Bildlauf zur Main-Methode durch. Hier sind verschiedene Initialisierungswerte angegeben: Der Kundenname wird mit Mr. Bryan Walton und der Saldo mit 11.99 initialisiert. Die Credit-Methode wird mit dem Parameterwert 5.77 und die Debit-Methode mit dem Parameterwert 11.22 aufgerufen. Wenn die Debit-Methode mit 11.22 aufgerufen wird, sollte Balance nach dem Aufruf den Wert 0.77 haben (beim angegeben Anfangssaldo von 11.99 in Balance).
Hinweis
Verwenden Sie den erwarteten Balance-Wert (0.77) in der Vorgehensweise Ausführen und Anpassen einen Komponententests.
Öffnen Sie die Datei Class1Test.cs, und führen Sie einen Bildlauf zur DebitTest-Methode durch.
Geben Sie die folgenden Werte an:
string customerName = "Mr. Bryan Walton"; double balance = 11.99; double amount = 11.22;
Speichern Sie die Datei Class1Test.cs.
Sie haben eine Quellcodedatei erstellt, die Tests für das Projekt Bank enthält. Sie können nun damit beginnen, die Tests in der BankAccountTest-Klasse für den Code im Projekt Bank auszuführen.
Ausführen und Anpassen einen Komponententests
Voraussetzung: Führen Sie die in der Vorgehensweise Erstellen eines Komponententests angegebenen Schritte aus.
So führen Sie einen Komponententest aus und nehmen Anpassungen vor
Wechseln Sie in das Fenster Test-Manager oder Testansicht, und führen Sie den DebitTest-Komponententest aus.
Das Fenster Testergebnisse wird angezeigt. Der DebitTest-Test wird ausgeführt.
Während der Ausführung wird im Fenster Testergebnisse in der Spalte Ergebnis der Teststatus Wird ausgeführt angezeigt. Nachdem der Testlauf beendet wurde, wird als Ergebnis für den Test Nicht eindeutig angezeigt.
Doppelklicken Sie im Fenster Testergebnisse auf die Zeile für den betreffenden Test.
Dadurch wird die Seite Testergebnisdetails geöffnet, auf der Informationen über die Testergebnisse angezeigt werden.
Beachten Sie, dass auf der Seite Testergebnisdetails die Fehlermeldung "Assert.Inconclusive fehlgeschlagen. Eine Methode, die keinen Wert zurückgibt, kann nicht überprüft werden." angezeigt wird. Um den Test erfolgreich ausführen zu können, beginnen Sie im ersten Schritt damit, die genannte Assert-Anweisung zu suchen und zu überprüfen.
Zum Ermitteln der Testmethode mit der Assert-Anweisung öffnen Sie die Datei Class1Test.cs und führen einen Bildlauf zur DebitTest()-Methode durch.
Die Assert-Anweisung befindet sich in der letzten Zeile der DebitTest-Methode. Die Anweisung lautet wie folgt:
Assert.Inconclusive("A method that does not return a value cannot be verified.");
Kommentieren Sie die Assert-Anweisung aus.
Beim erneuten Ausführen des Tests würden Sie als Ergebnis Erfolgreich erhalten, dies allerdings nur, weil jetzt keine Ergebniswerte mehr geprüft werden. Sie müssen Code hinzufügen, der einen Test auf die erwarteten Ergebnisse durchführt. Fügen Sie am Ende der DebitTest-Methode folgende Anweisung hinzu:
Assert.AreEqual((System.Convert.ToDouble(0.77)), target.Balance, 0.05);
Diese Anweisung vergleicht das erwartete Ergebnis (0.77) mit dem tatsächlichen Ergebnis des Aufrufs der Balance-Methode in der Klasse BankAccount. Wenn die Werte ungleich sind, gibt Assert den Wert False zurück, und der Test schlägt fehl.
Hinweis
Diese Assert-Anweisung erhält einen dritten Parameter Delta, in dem der Wert 0.05 übergeben wird. Für diese Überladung der Assert.AreEqual-Methode ist der Delta-Parameter erforderlich, um einen möglichen Rundungsfehler auszugleichen, der definitionsbedingt bei Gleitkommatypen wie Double auftreten kann.
Sie haben die generierte DebitTest-Methode der BankAccountTest-Testklasse ausgeführt und festgestellt, dass Änderungen erforderlich sind. Anschließend haben Sie diese Änderungen durchgeführt. Die Methode kann nun verwendet werden, um die Genauigkeit der Debit-Methode in Ihrer Anwendung zu testen.
Ausführen eines Komponententests und Korrigieren des Codes
Voraussetzung: Führen Sie die in der Vorgehensweise Ausführen und Anpassen einen Komponententests angegebenen Schritte aus.
So führen Sie einen Komponententest aus und korrigieren den Code
Führen Sie den Debit-Test aus: Wählen Sie in der Testansicht den Eintrag DebitTest aus, und klicken Sie auf Ausführen. Klicken Sie alternativ mit der rechten Maustaste auf DebitTest, und klicken Sie dann auf Auswahl ausführen.
Während der Ausführung wird im Fenster Testergebnisse in der Spalte Ergebnis der Teststatus Wird ausgeführt angezeigt. Nachdem der Testlauf beendet wurde, wird als Ergebnis für den Test Fehler angezeigt.
Doppelklicken Sie im Fenster Testergebnisse auf die Zeile für den betreffenden Test.
Dadurch wird die Seite Testergebnisdetails mit der Fehlermeldung "Assert.AreEqual fehlgeschlagen. Erwartet: < 0.77 >, Tatsächlich: < 23.21 >" angezeigt. Diese Zahlen weisen auf eine fehlerhafte mathematische Berechnung hin. Da die DebitTest-Methode der BankAccountTest-Klasse die Debit-Methode der BankAccount-Klasse testet, beginnen Sie mit einer Überprüfung der Debit-Methode.
Doppelklicken Sie im Projektmappen-Explorer im Projekt Bank auf die Datei Class1.cs, und führen Sie einen Bildlauf zur Debit-Methode durch.
Beachten Sie die folgende Zuweisung:
m_balance += amount;
Diese Zuweisung addiert einen Betrag zu einem Saldo. In einer Debit-Methode muss der Betrag jedoch subtrahiert werden. Ändern Sie diese Zeile wie folgt:
m_balance -= amount;
Führen Sie den Debit-Test erneut aus.
Im Fenster Testergebnisse wird in der Spalte Ergebnis der Status Erfolgreich für DebitTest angezeigt.
Hinweis
Sie mussten das Projekt nach den Änderungen im Quellcode nicht neu erstellen, da Projekte beim Ausführen eines Tests automatisch neu erstellt werden.
Sie haben einen funktionierenden Komponententest erstellt und mithilfe des Tests einen Fehler im Code entdeckt und behoben.
Erstellen und Ausführen eines Komponententests für eine private Methode
Voraussetzung: Führen Sie die in der Vorgehensweise Ausführen eines Komponententests und Korrigieren des Codes angegebenen Schritte aus.
So erstellen Sie einen Komponententest für eine private Methode und führen ihn aus
Doppelklicken Sie im Projektmappen-Explorer im Projekt Bank auf die Datei Class1.cs.
Heben Sie in der Datei Class1.cs in der BankAccount-Klasse die Auskommentierung der folgenden Codezeilen auf:
// new enum: public enum accountType { Gold, Platinum, } // private method: private accountType GetAccountType { get { if (Balance > 15.00) return accountType.Platinum; else return accountType.Gold; } }
Klicken Sie mit der rechten Maustaste auf die GetAccountType()-Methode, und wählen Sie Komponententests erstellen aus.
Das Dialogfeld Komponententests erstellen wird angezeigt.
In der Struktur ist nur die GetAccountType()-Methode ausgewählt. Behalten Sie die Auswahl bei, und klicken Sie auf OK.
Eine neue Datei mit dem Namen VSCodeGenAccessors.cs wird erstellt. Diese Datei enthält spezielle Accessormethoden, um Werte aus privaten Entitäten in der BankAccount-Klasse abzurufen. Die neue Datei wird im Projektmappen-Explorer im Testprojektordner angezeigt.
Öffnen Sie die Datei Class1Test.cs, und führen Sie einen Bildlauf zur GetAccountTypeTest()-Methode durch.
Kommentieren Sie die folgende Zeile aus:
Assert.Inconclusive("Verify the correctness of this test method.");
Suchen Sie in der GetAccountTypeTest()-Methode die drei Zuweisungen, die mit // TODO-Kommentaren markiert wurden. Ändern Sie die Zuweisungen wie folgt:
string customerName = "Mr. Bryan Walton"; double balance = 7.00; TestProject1.BankAccountNS_BankAccount_accountTypeAccessor val = TestProject1.BankAccountNS_BankAccount_accountTypeAccessor.Gold;
Führen Sie den Test GetAccountTypeTest aus.
Im Fenster Testergebnisse wird in der Spalte Ergebnis als abschließender Teststatus Erfolgreich angezeigt. Dies ist das erwartete Testergebnis, da bei einem Kontosaldo von 7.00 in accountType der Wert Gold angegeben sein soll.
Ändern Sie die Zuweisung
balance
in GetAccountTypeTest() wie folgt:double balance = 15.01;
Wiederholen Sie den Test GetAccountTypeTest.
Der GetAccountTypeTest()-Test testet die GetAccountType()-Methode, indem der zurückgegebene Wert und der erwartete Rückgabewert verglichen werden. Bei diesem Test widerspricht der Rückgabewert Gold dem erwarteten Rückgabewert für einen Kontosaldo von 15.01. Erwartungsgemäß führt der Test zum Ergebnis Fehler. Dieses Ergebnis zeigt an, dass der getestete Wert außerhalb des Bereichs für den Kontotyp Gold liegt.
Sie haben eine private Methode hinzugefügt, einen neuen Komponententest für diese Methode erstellt und den Test ausgeführt. Sie können den Test mehrfach ausführen und andere Grenzwerte (z. B. 15.00) für die Variable balance
benutzen.
Nächste Schritte
Beim Testen von Assemblycode können Sie durch die Erfassung von Codeabdeckungsdaten den Anteil des getesteten Projektcodes ermitteln. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Ausführen von Tests und Anzeigen der Codeabdeckung.
Sie können Tests auch in einer Befehlszeile statt in Visual Studio ausführen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Verwenden des Befehlszeilen-Testprogramms.
Siehe auch
Konzepte
Komponententestframework
Ausgegebene Testergebnisse